@plumile/router 0.1.96 → 0.1.98

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.
@@ -12,6 +12,7 @@ export default class BrowserHistory implements History {
12
12
  push(location: HistoryLocation): void;
13
13
  unsubscribe(listener: HistoryListener): void;
14
14
  subscribe(listener: HistoryListener): () => void;
15
+ dispose(): void;
15
16
  private __notify;
16
17
  private __consumePendingDebugContext;
17
18
  private __subscribe;
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserHistory.d.ts","sourceRoot":"","sources":["../../../src/history/BrowserHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAI5D;AAOD,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IAEpD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,qBAAqB,CAAoC;IAEjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,cAAc,CAAK;;IAgB3B,IAAW,QAAQ,IAAI,QAAQ,CAU9B;IAKM,IAAI,IAAI,IAAI;IAUZ,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+BpC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAiCrC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAY5C,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAYvD,OAAO,CAAC,QAAQ,CAQd;IAEF,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB,CA2BtB;IAEF,OAAO,CAAC,kBAAkB;CA2B3B"}
1
+ {"version":3,"file":"BrowserHistory.d.ts","sourceRoot":"","sources":["../../../src/history/BrowserHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAI5D;AAOD,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IAEpD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,qBAAqB,CAAoC;IAEjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,cAAc,CAAK;;IAgB3B,IAAW,QAAQ,IAAI,QAAQ,CAU9B;IAKM,IAAI,IAAI,IAAI;IAUZ,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+BpC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAiCrC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAY5C,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAUhD,OAAO,IAAI,IAAI;IAWtB,OAAO,CAAC,QAAQ,CAQd;IAEF,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB,CA2BtB;IAEF,OAAO,CAAC,kBAAkB;CA2B3B"}
@@ -68,6 +68,11 @@ export default class BrowserHistory {
68
68
  this.unsubscribe(listener);
69
69
  };
70
70
  }
71
+ dispose() {
72
+ window.removeEventListener('popstate', this.__handlePopstate);
73
+ this.__listeners = [];
74
+ this.__pendingDebugContext = null;
75
+ }
71
76
  __notify = (forceRerender) => {
72
77
  setTimeout(() => {
73
78
  const { location } = this;
@@ -136,4 +141,4 @@ export default class BrowserHistory {
136
141
  }, '', targetUrl);
137
142
  }
138
143
  }
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJvd3Nlckhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGlzdG9yeS9Ccm93c2VySGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQXlCO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBRXRELE9BQU8sR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFPRCxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWM7SUFFekIsV0FBVyxHQUFzQixFQUFFLENBQUM7SUFFcEMscUJBQXFCLEdBQStCLElBQUksQ0FBQztJQUV6RCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFLM0I7UUFDRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBUUQsSUFBVyxRQUFRO1FBSWpCLE9BQU87WUFFTCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDOUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtTQUNKLENBQUM7SUFDM0IsQ0FBQztJQUtNLElBQUk7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQVFNLEdBQUcsQ0FBQyxRQUF5QjtRQUNsQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsUUFFakMsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QixJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUc7Z0JBQzNCLEdBQUcsWUFBWTtnQkFDZixZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDbEMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRSxDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQ3pCO1lBQ0Usb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDMUMsRUFDRCxFQUFFLEVBQ0YsSUFBSSxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFRTSxJQUFJLENBQUMsUUFBeUI7UUFDbkMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFFBRWpDLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTFDLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRztnQkFDM0IsR0FBRyxZQUFZO2dCQUNmLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYzthQUNsQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JFLENBQUM7UUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDdEI7WUFDRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsY0FBYztTQUMxQyxFQUNELEVBQUUsRUFDRixJQUFJLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQU9NLFdBQVcsQ0FBQyxRQUF5QjtRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEQsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVFNLFNBQVMsQ0FBQyxRQUF5QjtRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQU9PLFFBQVEsR0FBRyxDQUFDLGFBQXNCLEVBQVEsRUFBRTtRQUNsRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztZQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNwQyxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQztJQUVNLDRCQUE0QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQzNDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUtPLFdBQVc7UUFDakIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFvQixFQUFRLEVBQUU7UUFDeEQsSUFBSSxNQUEwQixDQUFDO1FBQy9CLElBQUksWUFBZ0MsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBaUQsQ0FBQztRQUN0RSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsb0JBQW9CLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEUsWUFBWSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztZQUMxQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sR0FBRyxlQUFlLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztZQUM5QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxHQUFHLGtCQUFrQixDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztZQUNuQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRztZQUMzQixNQUFNO1lBQ04sT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWTtTQUNiLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVNLGtCQUFrQjtRQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBRXJCLENBQUM7UUFDVCxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsb0JBQW9CLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ25ELElBQUksU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUNFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN4QyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQzNCLENBQUM7WUFDRCxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUN6QjtZQUNFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxjQUFjO1NBQzFDLEVBQ0QsRUFBRSxFQUNGLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBIaXN0b3J5LFxuICBIaXN0b3J5RGVidWdDb250ZXh0LFxuICBIaXN0b3J5TGlzdGVuZXIsXG4gIEhpc3RvcnlMb2NhdGlvbixcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBsZXRlIFVSTCBwYXRoIGZyb20gYSBIaXN0b3J5TG9jYXRpb24gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBsb2NhdGlvbiAtIExvY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHBhdGhuYW1lLCBzZWFyY2gsIGFuZCBoYXNoXG4gKiBAcmV0dXJucyBDb21wbGV0ZSBwYXRoIHN0cmluZyBjb21iaW5pbmcgYWxsIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGgobG9jYXRpb246IEhpc3RvcnlMb2NhdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCA9ICcnLCBoYXNoID0gJycgfSA9IGxvY2F0aW9uO1xuXG4gIHJldHVybiBgJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YDtcbn1cblxuLyoqXG4gKiBCcm93c2VyIGhpc3RvcnkgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEhUTUw1IEhpc3RvcnkgQVBJLlxuICogTWFuYWdlcyBicm93c2VyIG5hdmlnYXRpb24gc3RhdGUgYW5kIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2VcbiAqIGZvciBwcm9ncmFtbWF0aWMgbmF2aWdhdGlvbiBhbmQgbG9jYXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJIaXN0b3J5IGltcGxlbWVudHMgSGlzdG9yeSB7XG4gIC8qKiBBcnJheSBvZiBsaXN0ZW5lcnMgZm9yIGxvY2F0aW9uIGNoYW5nZXMgKi9cbiAgcHJpdmF0ZSBfX2xpc3RlbmVyczogSGlzdG9yeUxpc3RlbmVyW10gPSBbXTtcbiAgLyoqIERlYnVnIG1ldGFkYXRhIGNhcHR1cmVkIGZvciB0aGUgbmV4dCBub3RpZmljYXRpb24gKi9cbiAgcHJpdmF0ZSBfX3BlbmRpbmdEZWJ1Z0NvbnRleHQ6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgfCBudWxsID0gbnVsbDtcbiAgLyoqIE1vbm90b25pYyBjb3VudGVyIGF0dGFjaGVkIHRvIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGUgKi9cbiAgcHJpdmF0ZSBfX2hpc3RvcnlJbmRleCA9IDA7XG4gIC8qKiBDdXJyZW50IGluZGV4IHJlcHJlc2VudGluZyB0aGUgYWN0aXZlIGVudHJ5ICovXG4gIHByaXZhdGUgX19jdXJyZW50SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJyb3dzZXJIaXN0b3J5IGluc3RhbmNlIGFuZCBpbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5fX2Vuc3VyZVN0YXRlSW5kZXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGJyb3dzZXIgbG9jYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgd2luZG93LmxvY2F0aW9uIG9iamVjdFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHVibGljIGdldCBsb2NhdGlvbigpOiBMb2NhdGlvbiB7XG4gICAgLy8gU29tZSB0ZXN0IERPTSBlbnZpcm9ubWVudHMgKGUuZy4gaGFwcHktZG9tKSBleHBvc2Ugbm9uLWVudW1lcmFibGVcbiAgICAvLyBMb2NhdGlvbiBwcm9wZXJ0aWVzIHNvIGEgc2ltcGxlIHNwcmVhZCByZXR1cm5zIGFuIGVtcHR5IG9iamVjdC5cbiAgICAvLyBSZXR1cm4gYW4gZXhwbGljaXQgcGxhaW4gb2JqZWN0IHdpdGggdGhlIGZpZWxkcyB3ZSByZWx5IG9uLlxuICAgIHJldHVybiB7XG4gICAgICAvLyBwYXRobmFtZS9zZWFyY2gvaGFzaCBhcmUgc3VmZmljaWVudCBmb3Igb3VyIHJvdXRlciBsb2dpY1xuICAgICAgcGF0aG5hbWU6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIHNlYXJjaDogd2luZG93LmxvY2F0aW9uLnNlYXJjaCxcbiAgICAgIGhhc2g6IHdpbmRvdy5sb2NhdGlvbi5oYXNoLFxuICAgIH0gYXMgdW5rbm93biBhcyBMb2NhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgaGlzdG9yeSBpbnN0YW5jZSBieSBzZXR0aW5nIHVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX19zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgY3VycmVudCBoaXN0b3J5IGVudHJ5IHdpdGggYSBuZXcgbG9jYXRpb24uXG4gICAqIFRoaXMgdXBkYXRlcyB0aGUgVVJMIHdpdGhvdXQgY3JlYXRpbmcgYSBuZXcgaGlzdG9yeSBlbnRyeS5cbiAgICpcbiAgICogQHBhcmFtIGxvY2F0aW9uIC0gTmV3IGxvY2F0aW9uIHRvIHNldFxuICAgKi9cbiAgcHVibGljIHNldChsb2NhdGlvbjogSGlzdG9yeUxvY2F0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBkZWJ1Z0NvbnRleHQsIC4uLnJlc3QgfSA9IGxvY2F0aW9uIGFzIEhpc3RvcnlMb2NhdGlvbiAmIHtcbiAgICAgIGRlYnVnQ29udGV4dD86IEhpc3RvcnlEZWJ1Z0NvbnRleHQ7XG4gICAgfTtcbiAgICBjb25zdCBwYXRoID0gY3JlYXRlUGF0aChyZXN0KTtcblxuICAgIGlmIChkZWJ1Z0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICAgIC4uLmRlYnVnQ29udGV4dCxcbiAgICAgICAgaGlzdG9yeUluZGV4OiB0aGlzLl9fY3VycmVudEluZGV4LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7IGhpc3RvcnlJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCB9O1xuICAgIH1cblxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgX19wbHVtaWxlUm91dGVySW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXgsXG4gICAgICB9LFxuICAgICAgJycsXG4gICAgICBwYXRoLFxuICAgICk7XG4gICAgdGhpcy5fX25vdGlmeSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBuZXcgbG9jYXRpb24gYnkgcHVzaGluZyBhIG5ldyBoaXN0b3J5IGVudHJ5LlxuICAgKiBUaGlzIGNyZWF0ZXMgYSBuZXcgZW50cnkgaW4gdGhlIGJyb3dzZXIncyBoaXN0b3J5IHN0YWNrLlxuICAgKlxuICAgKiBAcGFyYW0gbG9jYXRpb24gLSBMb2NhdGlvbiB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgcHVibGljIHB1c2gobG9jYXRpb246IEhpc3RvcnlMb2NhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHsgZGVidWdDb250ZXh0LCAuLi5yZXN0IH0gPSBsb2NhdGlvbiBhcyBIaXN0b3J5TG9jYXRpb24gJiB7XG4gICAgICBkZWJ1Z0NvbnRleHQ/OiBIaXN0b3J5RGVidWdDb250ZXh0O1xuICAgIH07XG4gICAgY29uc3QgcGF0aCA9IGNyZWF0ZVBhdGgocmVzdCk7XG5cbiAgICB0aGlzLl9faGlzdG9yeUluZGV4ICs9IDE7XG4gICAgdGhpcy5fX2N1cnJlbnRJbmRleCA9IHRoaXMuX19oaXN0b3J5SW5kZXg7XG5cbiAgICBpZiAoZGVidWdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0ge1xuICAgICAgICAuLi5kZWJ1Z0NvbnRleHQsXG4gICAgICAgIGhpc3RvcnlJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0geyBoaXN0b3J5SW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXggfTtcbiAgICB9XG5cbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoXG4gICAgICB7XG4gICAgICAgIF9fcGx1bWlsZVJvdXRlckluZGV4OiB0aGlzLl9fY3VycmVudEluZGV4LFxuICAgICAgfSxcbiAgICAgICcnLFxuICAgICAgcGF0aCxcbiAgICApO1xuICAgIHRoaXMuX19ub3RpZnkoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSBoaXN0b3J5IGNoYW5nZSBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gbGlzdGVuZXIgLSBMaXN0ZW5lciBmdW5jdGlvbiB0byByZW1vdmVcbiAgICovXG4gIHB1YmxpYyB1bnN1YnNjcmliZShsaXN0ZW5lcjogSGlzdG9yeUxpc3RlbmVyKTogdm9pZCB7XG4gICAgdGhpcy5fX2xpc3RlbmVycyA9IHRoaXMuX19saXN0ZW5lcnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBoaXN0b3J5IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBsaXN0ZW5lciAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBsb2NhdGlvbiBjaGFuZ2VzXG4gICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiBIaXN0b3J5TGlzdGVuZXIpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLl9fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIGFsbCBsaXN0ZW5lcnMgb2YgYSBsb2NhdGlvbiBjaGFuZ2UuXG4gICAqXG4gICAqIFVzZXMgc2V0VGltZW91dCB0byBlbnN1cmUgdGhlIG5vdGlmaWNhdGlvbiBoYXBwZW5zIGFmdGVyIHRoZSBjdXJyZW50IGV4ZWN1dGlvbi5cbiAgICovXG4gIHByaXZhdGUgX19ub3RpZnkgPSAoZm9yY2VSZXJlbmRlcjogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgeyBsb2NhdGlvbiB9ID0gdGhpcztcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9fY29uc3VtZVBlbmRpbmdEZWJ1Z0NvbnRleHQoKTtcbiAgICAgIHRoaXMuX19saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgICAgbGlzdGVuZXIobG9jYXRpb24sIGZvcmNlUmVyZW5kZXIsIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfSwgMCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfX2NvbnN1bWVQZW5kaW5nRGVidWdDb250ZXh0KCk6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9fcGVuZGluZ0RlYnVnQ29udGV4dCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQ7XG4gICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSBudWxsO1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIHBvcHN0YXRlIGV2ZW50IGxpc3RlbmVyIGZvciBicm93c2VyIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3N1YnNjcmliZSgpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCB0aGlzLl9faGFuZGxlUG9wc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfX2hhbmRsZVBvcHN0YXRlID0gKGV2ZW50OiBQb3BTdGF0ZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgbGV0IG9yaWdpbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBoaXN0b3J5SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGF0ZSA9IGV2ZW50LnN0YXRlIGFzIHsgX19wbHVtaWxlUm91dGVySW5kZXg/OiBudW1iZXIgfSB8IG51bGw7XG4gICAgaWYgKHN0YXRlICE9IG51bGwgJiYgdHlwZW9mIHN0YXRlLl9fcGx1bWlsZVJvdXRlckluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgaGlzdG9yeUluZGV4ID0gc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXg7XG4gICAgICBpZiAoaGlzdG9yeUluZGV4IDwgdGhpcy5fX2N1cnJlbnRJbmRleCkge1xuICAgICAgICBvcmlnaW4gPSAncG9wc3RhdGUtYmFjayc7XG4gICAgICB9IGVsc2UgaWYgKGhpc3RvcnlJbmRleCA+IHRoaXMuX19jdXJyZW50SW5kZXgpIHtcbiAgICAgICAgb3JpZ2luID0gJ3BvcHN0YXRlLWZvcndhcmQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JpZ2luID0gJ3BvcHN0YXRlLXVua25vd24nO1xuICAgICAgfVxuICAgICAgdGhpcy5fX2N1cnJlbnRJbmRleCA9IGhpc3RvcnlJbmRleDtcbiAgICAgIGlmIChoaXN0b3J5SW5kZXggPiB0aGlzLl9faGlzdG9yeUluZGV4KSB7XG4gICAgICAgIHRoaXMuX19oaXN0b3J5SW5kZXggPSBoaXN0b3J5SW5kZXg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yaWdpbiA9ICdleHRlcm5hbCc7XG4gICAgfVxuXG4gICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICBvcmlnaW4sXG4gICAgICB0cmlnZ2VyOiAncG9wc3RhdGUnLFxuICAgICAgaGlzdG9yeUluZGV4LFxuICAgIH07XG4gICAgdGhpcy5fX25vdGlmeShmYWxzZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfX2Vuc3VyZVN0YXRlSW5kZXgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB3aW5kb3cuaGlzdG9yeS5zdGF0ZSBhcyB7XG4gICAgICBfX3BsdW1pbGVSb3V0ZXJJbmRleD86IG51bWJlcjtcbiAgICB9IHwgbnVsbDtcbiAgICBpZiAoc3RhdGUgIT0gbnVsbCAmJiB0eXBlb2Ygc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9fY3VycmVudEluZGV4ID0gc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXg7XG4gICAgICB0aGlzLl9faGlzdG9yeUluZGV4ID0gc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXg7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHRhcmdldFVybCA9IGAke3BhdGhuYW1lfSR7c2VhcmNofSR7aGFzaH1gO1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiB3aW5kb3cubG9jYXRpb24uaHJlZiA9PT0gJ3N0cmluZycgJiZcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICE9PSAnJ1xuICAgICkge1xuICAgICAgdGFyZ2V0VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgfVxuXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKFxuICAgICAge1xuICAgICAgICBfX3BsdW1pbGVSb3V0ZXJJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCxcbiAgICAgIH0sXG4gICAgICAnJyxcbiAgICAgIHRhcmdldFVybCxcbiAgICApO1xuICB9XG59XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJvd3Nlckhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGlzdG9yeS9Ccm93c2VySGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQXlCO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBRXRELE9BQU8sR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFPRCxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWM7SUFFekIsV0FBVyxHQUFzQixFQUFFLENBQUM7SUFFcEMscUJBQXFCLEdBQStCLElBQUksQ0FBQztJQUV6RCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFLM0I7UUFDRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBUUQsSUFBVyxRQUFRO1FBSWpCLE9BQU87WUFFTCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDOUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtTQUNKLENBQUM7SUFDM0IsQ0FBQztJQUtNLElBQUk7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQVFNLEdBQUcsQ0FBQyxRQUF5QjtRQUNsQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsUUFFakMsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QixJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FB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TyxFQUFFLFVBQVU7WUFDbkIsWUFBWTtTQUNiLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVNLGtCQUFrQjtRQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBRXJCLENBQUM7UUFDVCxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsb0JBQW9CLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ25ELElBQUksU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUNFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN4QyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQzNCLENBQUM7WUFDRCxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUN6QjtZQUNFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxjQUFjO1NBQzFDLEVBQ0QsRUFBRSxFQUNGLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBIaXN0b3J5LFxuICBIaXN0b3J5RGVidWdDb250ZXh0LFxuICBIaXN0b3J5TGlzdGVuZXIsXG4gIEhpc3RvcnlMb2NhdGlvbixcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBsZXRlIFVSTCBwYXRoIGZyb20gYSBIaXN0b3J5TG9jYXRpb24gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBsb2NhdGlvbiAtIExvY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHBhdGhuYW1lLCBzZWFyY2gsIGFuZCBoYXNoXG4gKiBAcmV0dXJucyBDb21wbGV0ZSBwYXRoIHN0cmluZyBjb21iaW5pbmcgYWxsIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGgobG9jYXRpb246IEhpc3RvcnlMb2NhdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCA9ICcnLCBoYXNoID0gJycgfSA9IGxvY2F0aW9uO1xuXG4gIHJldHVybiBgJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YDtcbn1cblxuLyoqXG4gKiBCcm93c2VyIGhpc3RvcnkgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEhUTUw1IEhpc3RvcnkgQVBJLlxuICogTWFuYWdlcyBicm93c2VyIG5hdmlnYXRpb24gc3RhdGUgYW5kIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2VcbiAqIGZvciBwcm9ncmFtbWF0aWMgbmF2aWdhdGlvbiBhbmQgbG9jYXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJIaXN0b3J5IGltcGxlbWVudHMgSGlzdG9yeSB7XG4gIC8qKiBBcnJheSBvZiBsaXN0ZW5lcnMgZm9yIGxvY2F0aW9uIGNoYW5nZXMgKi9cbiAgcHJpdmF0ZSBfX2xpc3RlbmVyczogSGlzdG9yeUxpc3RlbmVyW10gPSBbXTtcbiAgLyoqIERlYnVnIG1ldGFkYXRhIGNhcHR1cmVkIGZvciB0aGUgbmV4dCBub3RpZmljYXRpb24gKi9cbiAgcHJpdmF0ZSBfX3BlbmRpbmdEZWJ1Z0NvbnRleHQ6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgfCBudWxsID0gbnVsbDtcbiAgLyoqIE1vbm90b25pYyBjb3VudGVyIGF0dGFjaGVkIHRvIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGUgKi9cbiAgcHJpdmF0ZSBfX2hpc3RvcnlJbmRleCA9IDA7XG4gIC8qKiBDdXJyZW50IGluZGV4IHJlcHJlc2VudGluZyB0aGUgYWN0aXZlIGVudHJ5ICovXG4gIHByaXZhdGUgX19jdXJyZW50SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJyb3dzZXJIaXN0b3J5IGluc3RhbmNlIGFuZCBpbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5fX2Vuc3VyZVN0YXRlSW5kZXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGJyb3dzZXIgbG9jYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgd2luZG93LmxvY2F0aW9uIG9iamVjdFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHVibGljIGdldCBsb2NhdGlvbigpOiBMb2NhdGlvbiB7XG4gICAgLy8gU29tZSB0ZXN0IERPTSBlbnZpcm9ubWVudHMgKGUuZy4gaGFwcHktZG9tKSBleHBvc2Ugbm9uLWVudW1lcmFibGVcbiAgICAvLyBMb2NhdGlvbiBwcm9wZXJ0aWVzIHNvIGEgc2ltcGxlIHNwcmVhZCByZXR1cm5zIGFuIGVtcHR5IG9iamVjdC5cbiAgICAvLyBSZXR1cm4gYW4gZXhwbGljaXQgcGxhaW4gb2JqZWN0IHdpdGggdGhlIGZpZWxkcyB3ZSByZWx5IG9uLlxuICAgIHJldHVybiB7XG4gICAgICAvLyBwYXRobmFtZS9zZWFyY2gvaGFzaCBhcmUgc3VmZmljaWVudCBmb3Igb3VyIHJvdXRlciBsb2dpY1xuICAgICAgcGF0aG5hbWU6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIHNlYXJjaDogd2luZG93LmxvY2F0aW9uLnNlYXJjaCxcbiAgICAgIGhhc2g6IHdpbmRvdy5sb2NhdGlvbi5oYXNoLFxuICAgIH0gYXMgdW5rbm93biBhcyBMb2NhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgaGlzdG9yeSBpbnN0YW5jZSBieSBzZXR0aW5nIHVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX19zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgY3VycmVudCBoaXN0b3J5IGVudHJ5IHdpdGggYSBuZXcgbG9jYXRpb24uXG4gICAqIFRoaXMgdXBkYXRlcyB0aGUgVVJMIHdpdGhvdXQgY3JlYXRpbmcgYSBuZXcgaGlzdG9yeSBlbnRyeS5cbiAgICpcbiAgICogQHBhcmFtIGxvY2F0aW9uIC0gTmV3IGxvY2F0aW9uIHRvIHNldFxuICAgKi9cbiAgcHVibGljIHNldChsb2NhdGlvbjogSGlzdG9yeUxvY2F0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBkZWJ1Z0NvbnRleHQsIC4uLnJlc3QgfSA9IGxvY2F0aW9uIGFzIEhpc3RvcnlMb2NhdGlvbiAmIHtcbiAgICAgIGRlYnVnQ29udGV4dD86IEhpc3RvcnlEZWJ1Z0NvbnRleHQ7XG4gICAgfTtcbiAgICBjb25zdCBwYXRoID0gY3JlYXRlUGF0aChyZXN0KTtcblxuICAgIGlmIChkZWJ1Z0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICAgIC4uLmRlYnVnQ29udGV4dCxcbiAgICAgICAgaGlzdG9yeUluZGV4OiB0aGlzLl9fY3VycmVudEluZGV4LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7IGhpc3RvcnlJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCB9O1xuICAgIH1cblxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgX19wbHVtaWxlUm91dGVySW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXgsXG4gICAgICB9LFxuICAgICAgJycsXG4gICAgICBwYXRoLFxuICAgICk7XG4gICAgdGhpcy5fX25vdGlmeSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBuZXcgbG9jYXRpb24gYnkgcHVzaGluZyBhIG5ldyBoaXN0b3J5IGVudHJ5LlxuICAgKiBUaGlzIGNyZWF0ZXMgYSBuZXcgZW50cnkgaW4gdGhlIGJyb3dzZXIncyBoaXN0b3J5IHN0YWNrLlxuICAgKlxuICAgKiBAcGFyYW0gbG9jYXRpb24gLSBMb2NhdGlvbiB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgcHVibGljIHB1c2gobG9jYXRpb246IEhpc3RvcnlMb2NhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHsgZGVidWdDb250ZXh0LCAuLi5yZXN0IH0gPSBsb2NhdGlvbiBhcyBIaXN0b3J5TG9jYXRpb24gJiB7XG4gICAgICBkZWJ1Z0NvbnRleHQ/OiBIaXN0b3J5RGVidWdDb250ZXh0O1xuICAgIH07XG4gICAgY29uc3QgcGF0aCA9IGNyZWF0ZVBhdGgocmVzdCk7XG5cbiAgICB0aGlzLl9faGlzdG9yeUluZGV4ICs9IDE7XG4gICAgdGhpcy5fX2N1cnJlbnRJbmRleCA9IHRoaXMuX19oaXN0b3J5SW5kZXg7XG5cbiAgICBpZiAoZGVidWdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0ge1xuICAgICAgICAuLi5kZWJ1Z0NvbnRleHQsXG4gICAgICAgIGhpc3RvcnlJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0geyBoaXN0b3J5SW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXggfTtcbiAgICB9XG5cbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoXG4gICAgICB7XG4gICAgICAgIF9fcGx1bWlsZVJvdXRlckluZGV4OiB0aGlzLl9fY3VycmVudEluZGV4LFxuICAgICAgfSxcbiAgICAgICcnLFxuICAgICAgcGF0aCxcbiAgICApO1xuICAgIHRoaXMuX19ub3RpZnkoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSBoaXN0b3J5IGNoYW5nZSBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gbGlzdGVuZXIgLSBMaXN0ZW5lciBmdW5jdGlvbiB0byByZW1vdmVcbiAgICovXG4gIHB1YmxpYyB1bnN1YnNjcmliZShsaXN0ZW5lcjogSGlzdG9yeUxpc3RlbmVyKTogdm9pZCB7XG4gICAgdGhpcy5fX2xpc3RlbmVycyA9IHRoaXMuX19saXN0ZW5lcnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBoaXN0b3J5IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBsaXN0ZW5lciAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBsb2NhdGlvbiBjaGFuZ2VzXG4gICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiBIaXN0b3J5TGlzdGVuZXIpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLl9fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGJyb3dzZXItbGV2ZWwgbGlzdGVuZXJzIGFuZCBsb2NhbCBzdWJzY3JpcHRpb25zIG93bmVkIGJ5IHRoaXMgaGlzdG9yeSBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMuX19oYW5kbGVQb3BzdGF0ZSk7XG4gICAgdGhpcy5fX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZmllcyBhbGwgbGlzdGVuZXJzIG9mIGEgbG9jYXRpb24gY2hhbmdlLlxuICAgKlxuICAgKiBVc2VzIHNldFRpbWVvdXQgdG8gZW5zdXJlIHRoZSBub3RpZmljYXRpb24gaGFwcGVucyBhZnRlciB0aGUgY3VycmVudCBleGVjdXRpb24uXG4gICAqL1xuICBwcml2YXRlIF9fbm90aWZ5ID0gKGZvcmNlUmVyZW5kZXI6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHsgbG9jYXRpb24gfSA9IHRoaXM7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fX2NvbnN1bWVQZW5kaW5nRGVidWdDb250ZXh0KCk7XG4gICAgICB0aGlzLl9fbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7XG4gICAgICAgIGxpc3RlbmVyKGxvY2F0aW9uLCBmb3JjZVJlcmVuZGVyLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuICAgIH0sIDApO1xuICB9O1xuXG4gIHByaXZhdGUgX19jb25zdW1lUGVuZGluZ0RlYnVnQ29udGV4dCgpOiBIaXN0b3J5RGVidWdDb250ZXh0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0O1xuICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0gbnVsbDtcbiAgICByZXR1cm4gY29udGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBwb3BzdGF0ZSBldmVudCBsaXN0ZW5lciBmb3IgYnJvd3NlciBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgX19zdWJzY3JpYmUoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgdGhpcy5fX2hhbmRsZVBvcHN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX19oYW5kbGVQb3BzdGF0ZSA9IChldmVudDogUG9wU3RhdGVFdmVudCk6IHZvaWQgPT4ge1xuICAgIGxldCBvcmlnaW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgaGlzdG9yeUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RhdGUgPSBldmVudC5zdGF0ZSBhcyB7IF9fcGx1bWlsZVJvdXRlckluZGV4PzogbnVtYmVyIH0gfCBudWxsO1xuICAgIGlmIChzdGF0ZSAhPSBudWxsICYmIHR5cGVvZiBzdGF0ZS5fX3BsdW1pbGVSb3V0ZXJJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGhpc3RvcnlJbmRleCA9IHN0YXRlLl9fcGx1bWlsZVJvdXRlckluZGV4O1xuICAgICAgaWYgKGhpc3RvcnlJbmRleCA8IHRoaXMuX19jdXJyZW50SW5kZXgpIHtcbiAgICAgICAgb3JpZ2luID0gJ3BvcHN0YXRlLWJhY2snO1xuICAgICAgfSBlbHNlIGlmIChoaXN0b3J5SW5kZXggPiB0aGlzLl9fY3VycmVudEluZGV4KSB7XG4gICAgICAgIG9yaWdpbiA9ICdwb3BzdGF0ZS1mb3J3YXJkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9yaWdpbiA9ICdwb3BzdGF0ZS11bmtub3duJztcbiAgICAgIH1cbiAgICAgIHRoaXMuX19jdXJyZW50SW5kZXggPSBoaXN0b3J5SW5kZXg7XG4gICAgICBpZiAoaGlzdG9yeUluZGV4ID4gdGhpcy5fX2hpc3RvcnlJbmRleCkge1xuICAgICAgICB0aGlzLl9faGlzdG9yeUluZGV4ID0gaGlzdG9yeUluZGV4O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcmlnaW4gPSAnZXh0ZXJuYWwnO1xuICAgIH1cblxuICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0ge1xuICAgICAgb3JpZ2luLFxuICAgICAgdHJpZ2dlcjogJ3BvcHN0YXRlJyxcbiAgICAgIGhpc3RvcnlJbmRleCxcbiAgICB9O1xuICAgIHRoaXMuX19ub3RpZnkoZmFsc2UpO1xuICB9O1xuXG4gIHByaXZhdGUgX19lbnN1cmVTdGF0ZUluZGV4KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gd2luZG93Lmhpc3Rvcnkuc3RhdGUgYXMge1xuICAgICAgX19wbHVtaWxlUm91dGVySW5kZXg/OiBudW1iZXI7XG4gICAgfSB8IG51bGw7XG4gICAgaWYgKHN0YXRlICE9IG51bGwgJiYgdHlwZW9mIHN0YXRlLl9fcGx1bWlsZVJvdXRlckluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fX2N1cnJlbnRJbmRleCA9IHN0YXRlLl9fcGx1bWlsZVJvdXRlckluZGV4O1xuICAgICAgdGhpcy5fX2hpc3RvcnlJbmRleCA9IHN0YXRlLl9fcGx1bWlsZVJvdXRlckluZGV4O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGxldCB0YXJnZXRVcmwgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YDtcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygd2luZG93LmxvY2F0aW9uLmhyZWYgPT09ICdzdHJpbmcnICYmXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiAhPT0gJydcbiAgICApIHtcbiAgICAgIHRhcmdldFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIH1cblxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgX19wbHVtaWxlUm91dGVySW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXgsXG4gICAgICB9LFxuICAgICAgJycsXG4gICAgICB0YXJnZXRVcmwsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"RouterRenderer.d.ts","sourceRoot":"","sources":["../../../src/routing/RouterRenderer.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,SAAS,EAA0B,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAiBhF,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAKD,KAAK,KAAK,GAAG;IAEX,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAyBF,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IAsIpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RouterRenderer.d.ts","sourceRoot":"","sources":["../../../src/routing/RouterRenderer.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,KAAK,SAAS,EAId,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAiBf,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAKD,KAAK,KAAK,GAAG;IAEX,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAyBF,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IA4GpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useMemo, useTransition } from 'react';
2
+ import React, { useDeferredValue, useMemo, useSyncExternalStore, } from 'react';
3
3
  import RoutingContext from './RoutingContext.js';
4
4
  import RouteComponentWrapper from './RouteComponentWrapper.js';
5
- const { useContext, useEffect, Suspense, useState } = React;
5
+ const { useContext, Suspense } = React;
6
6
  let index = 0;
7
7
  export function getNewIndex() {
8
8
  index += 1;
@@ -11,57 +11,49 @@ export function getNewIndex() {
11
11
  const RouterRenderer = (props) => {
12
12
  const { fallback, pending, enableTransition = false } = props;
13
13
  const router = useContext(RoutingContext);
14
- const [isPending, startTransition] = useTransition();
15
- const [routeEntry, setRouteEntry] = useState(router?.get());
16
- useEffect(() => {
14
+ const routeEntry = useSyncExternalStore((callback) => {
17
15
  if (router == null) {
18
- return;
16
+ return () => { };
19
17
  }
20
- const currentEntry = router.get();
21
- if (currentEntry !== routeEntry) {
22
- setRouteEntry(currentEntry);
23
- return;
24
- }
25
- const dispose = router.subscribe((nextEntry) => {
26
- if (enableTransition) {
27
- startTransition(() => {
28
- setRouteEntry(nextEntry);
29
- });
30
- }
31
- else {
32
- setRouteEntry(nextEntry);
33
- }
18
+ return router.subscribe(() => {
19
+ callback();
34
20
  });
35
- return () => {
36
- dispose();
37
- };
38
- }, [router]);
21
+ }, () => {
22
+ return router?.get();
23
+ }, () => {
24
+ return router?.get();
25
+ });
26
+ const deferredRouteEntry = useDeferredValue(routeEntry);
27
+ let visibleRouteEntry = routeEntry;
28
+ if (enableTransition) {
29
+ visibleRouteEntry = deferredRouteEntry;
30
+ }
39
31
  const pendingContent = useMemo(() => {
40
- if (isPending) {
32
+ if (enableTransition && deferredRouteEntry !== routeEntry) {
41
33
  return pending;
42
34
  }
43
35
  return null;
44
- }, [isPending, pending]);
36
+ }, [deferredRouteEntry, enableTransition, pending, routeEntry]);
45
37
  const routeComponent = useMemo(() => {
46
- if (routeEntry == null) {
38
+ if (visibleRouteEntry == null) {
47
39
  return null;
48
40
  }
49
41
  const result = [];
50
42
  const reversedItems = result
51
- .concat(routeEntry.preparedMatch.routes)
43
+ .concat(visibleRouteEntry.preparedMatch.routes)
52
44
  .reverse();
53
45
  const firstItem = reversedItems[0];
54
46
  if (firstItem == null) {
55
47
  return null;
56
48
  }
57
- let mainComponent = (_jsx(RouteComponentWrapper, { match: routeEntry.preparedMatch.match ?? null, preparedRoute: firstItem }, firstItem.path));
49
+ let mainComponent = (_jsx(RouteComponentWrapper, { match: visibleRouteEntry.preparedMatch.match ?? null, preparedRoute: firstItem }, firstItem.path));
58
50
  for (let index = 1; index < reversedItems.length; index += 1) {
59
51
  const nextItem = reversedItems[index];
60
- mainComponent = (_jsx(RouteComponentWrapper, { match: routeEntry.preparedMatch.match ?? null, preparedRoute: nextItem, children: mainComponent }, nextItem.path));
52
+ mainComponent = (_jsx(RouteComponentWrapper, { match: visibleRouteEntry.preparedMatch.match ?? null, preparedRoute: nextItem, children: mainComponent }, nextItem.path));
61
53
  }
62
54
  return mainComponent;
63
- }, [routeEntry]);
55
+ }, [visibleRouteEntry]);
64
56
  return (_jsxs(Suspense, { fallback: fallback, children: [pendingContent, routeComponent] }));
65
57
  };
66
58
  export default RouterRenderer;
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0ZXJSZW5kZXJlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQWtCLE9BQU8sRUFBRSxhQUFhLEVBQVksTUFBTSxPQUFPLENBQUM7QUFJaEYsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxxQkFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBRTVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQVFkLE1BQU0sVUFBVSxXQUFXO0lBQ3pCLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDWCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFxQ0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFZLEVBQXNCLEVBQUU7SUFDMUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRzlELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUsxQyxNQUFNLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBSXJELE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1QsQ0FBQztRQUdELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxJQUFJLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUVoQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsT0FBTztRQUNULENBQUM7UUFHRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFJN0MsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixlQUFlLENBQUMsR0FBRyxFQUFFO29CQUNuQixhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFHSCxPQUFPLEdBQUcsRUFBRTtZQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO0lBTUosQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQXNCYixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2xDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUl6QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2xDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUF5QixFQUFFLENBQUM7UUFFeEMsTUFBTSxhQUFhLEdBQUcsTUFBTTthQUN6QixNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7YUFDdkMsT0FBTyxFQUFFLENBQUM7UUFFYixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkMsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxhQUFhLEdBQUcsQ0FDbEIsS0FBQyxxQkFBcUIsSUFFcEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksRUFDN0MsYUFBYSxFQUFFLFNBQVMsSUFGbkIsU0FBUyxDQUFDLElBQUksQ0FHbkIsQ0FDSCxDQUFDO1FBQ0YsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxhQUFhLEdBQUcsQ0FDZCxLQUFDLHFCQUFxQixJQUdwQixLQUFLLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUU3QyxhQUFhLEVBQUUsUUFBUyxZQUV2QixhQUFhLElBTFQsUUFBUyxDQUFDLElBQUksQ0FNRyxDQUN6QixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFJakIsT0FBTyxDQUNMLE1BQUMsUUFBUSxJQUFDLFFBQVEsRUFBRSxRQUFRLGFBQ3pCLGNBQWMsRUFDZCxjQUFjLElBQ04sQ0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdHlwZSBSZWFjdE5vZGUsIHVzZU1lbW8sIHVzZVRyYW5zaXRpb24sIHR5cGUgSlNYIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7IFByZXBhcmVkTWF0Y2hSb3V0ZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuaW1wb3J0IFJvdXRlQ29tcG9uZW50V3JhcHBlciBmcm9tICcuL1JvdXRlQ29tcG9uZW50V3JhcHBlci5qcyc7XG5cbmNvbnN0IHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCBTdXNwZW5zZSwgdXNlU3RhdGUgfSA9IFJlYWN0O1xuXG5sZXQgaW5kZXggPSAwO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBpbmRleCBmb3IgY29tcG9uZW50IGluc3RhbmNlcy5cbiAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGVuc3VyZSBwcm9wZXIgUmVhY3QgcmVjb25jaWxpYXRpb24uXG4gKlxuICogQHJldHVybnMgQSB1bmlxdWUgaW5jcmVtZW50YWwgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdJbmRleCgpOiBudW1iZXIge1xuICBpbmRleCArPSAxO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBSb3V0ZXJSZW5kZXJlciBjb21wb25lbnQuXG4gKi9cbnR5cGUgUHJvcHMgPSB7XG4gIC8qKiBGYWxsYmFjayBVSSB0byBzaG93IHdoaWxlIGxvYWRpbmcgY29tcG9uZW50cyAqL1xuICBmYWxsYmFjaz86IFJlYWN0Tm9kZTtcbiAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIFJlYWN0IDE4IHRyYW5zaXRpb25zIGZvciBzbW9vdGhlciByb3V0ZSBjaGFuZ2VzICovXG4gIGVuYWJsZVRyYW5zaXRpb24/OiBib29sZWFuO1xuICAvKiogVUkgdG8gc2hvdyBkdXJpbmcgdHJhbnNpdGlvbnMgKHdoZW4gZW5hYmxlVHJhbnNpdGlvbiBpcyB0cnVlKSAqL1xuICBwZW5kaW5nPzogUmVhY3ROb2RlO1xufTtcblxuLyoqXG4gKiBNYWluIHJvdXRlciByZW5kZXJlciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyB0aGUgY3VycmVudCByb3V0ZS5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBhY2Nlc3NlcyB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSBmcm9tIFJvdXRpbmdDb250ZXh0IGFuZCByZW5kZXJzXG4gKiB0aGUgYXBwcm9wcmlhdGUgY29tcG9uZW50cy4gSXQgc3VwcG9ydHMgUmVhY3QgU3VzcGVuc2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHNcbiAqIGFuZCBjYW4gb3B0aW9uYWxseSB1c2UgUmVhY3QgMTggdHJhbnNpdGlvbnMgZm9yIHNtb290aGVyIHJvdXRlIGNoYW5nZXMuXG4gKlxuICogVGhlIGNvbXBvbmVudCBoYW5kbGVzIG5lc3RlZCByb3V0ZXMgYnkgY3JlYXRpbmcgYSBoaWVyYXJjaHkgb2YgUm91dGVDb21wb25lbnRXcmFwcGVyXG4gKiBjb21wb25lbnRzLCB3aGVyZSBlYWNoIGxldmVsIGNhbiByZW5kZXIgaXRzIG93biBjb21wb25lbnQgYW5kIGNoaWxkcmVuLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggU3VzcGVuc2UgZmFsbGJhY2tcbiAqIDxSb3V0ZXJSZW5kZXJlciBmYWxsYmFjaz17PGRpdj5Mb2FkaW5nLi4uPC9kaXY+fSAvPlxuICpcbiAqIC8vIFdpdGggUmVhY3QgMTggdHJhbnNpdGlvbnNcbiAqIDxSb3V0ZXJSZW5kZXJlclxuICogICBlbmFibGVUcmFuc2l0aW9uXG4gKiAgIGZhbGxiYWNrPXs8ZGl2PkxvYWRpbmcuLi48L2Rpdj59XG4gKiAgIHBlbmRpbmc9ezxkaXY+TmF2aWdhdGluZy4uLjwvZGl2Pn1cbiAqIC8+XG4gKiBgYGBcbiAqL1xuY29uc3QgUm91dGVyUmVuZGVyZXIgPSAocHJvcHM6IFByb3BzKTogSlNYLkVsZW1lbnQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBmYWxsYmFjaywgcGVuZGluZywgZW5hYmxlVHJhbnNpdGlvbiA9IGZhbHNlIH0gPSBwcm9wcztcblxuICAvLyBBY2Nlc3MgdGhlIHJvdXRlciBjb250ZXh0XG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuXG4gIC8vIFVzZSBSZWFjdCAxOCB0cmFuc2l0aW9ucyB0byBpbXByb3ZlIHJvdXRlIHRyYW5zaXRpb24gVVggYnkgZGVsYXlpbmdcbiAgLy8gdHJhbnNpdGlvbnMgYW5kIHNob3dpbmcgdGhlIHByZXZpb3VzIHJvdXRlIGZvciBhIGJyaWVmIHBlcmlvZCB3aGlsZVxuICAvLyB0aGUgbmV4dCByb3V0ZSBpcyBiZWluZyBwcmVwYXJlZC5cbiAgY29uc3QgW2lzUGVuZGluZywgc3RhcnRUcmFuc2l0aW9uXSA9IHVzZVRyYW5zaXRpb24oKTtcblxuICAvLyBTdG9yZSB0aGUgYWN0aXZlIGVudHJ5IGluIHN0YXRlIC0gdGhpcyBhbGxvd3MgdGhlIHJlbmRlcmVyIHRvIHVzZSBmZWF0dXJlcyBsaWtlXG4gIC8vIHVzZVRyYW5zaXRpb24gdG8gZGVsYXkgd2hlbiBzdGF0ZSBjaGFuZ2VzIGJlY29tZSB2aXNpYmxlIHRvIHRoZSB1c2VyLlxuICBjb25zdCBbcm91dGVFbnRyeSwgc2V0Um91dGVFbnRyeV0gPSB1c2VTdGF0ZShyb3V0ZXI/LmdldCgpKTtcblxuICAvLyBTdWJzY3JpYmUgdG8gcm91dGUgY2hhbmdlcyBvbiBtb3VudFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSByb3V0ZSBoYXMgY2hhbmdlZCBiZXR3ZWVuIHRoZSBsYXN0IHJlbmRlciBhbmQgY29tbWl0XG4gICAgY29uc3QgY3VycmVudEVudHJ5ID0gcm91dGVyLmdldCgpO1xuICAgIGlmIChjdXJyZW50RW50cnkgIT09IHJvdXRlRW50cnkpIHtcbiAgICAgIC8vIEhhbmRsZSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgYnkgcmUtcmVuZGVyaW5nIHdpdGggY3VycmVudCBlbnRyeVxuICAgICAgc2V0Um91dGVFbnRyeShjdXJyZW50RW50cnkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN1YnNjcmliZSBmb3Igc3Vic2VxdWVudCByb3V0ZSB1cGRhdGVzXG4gICAgY29uc3QgZGlzcG9zZSA9IHJvdXRlci5zdWJzY3JpYmUoKG5leHRFbnRyeSkgPT4ge1xuICAgICAgLy8gVXNlIHN0YXJ0VHJhbnNpdGlvbiB0byBkZWxheSB0aGUgZWZmZWN0IG9mIHNldFJvdXRlRW50cnkgZm9yIHNtb290aGVyIFVYLlxuICAgICAgLy8gVGhpcyBjb250aW51ZXMgc2hvd2luZyB0aGUgb2xkIHN0YXRlIHdoaWxlIHRoZSBuZXcgcm91dGUgaXMgYmVpbmcgcHJlcGFyZWQuXG5cbiAgICAgIGlmIChlbmFibGVUcmFuc2l0aW9uKSB7XG4gICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgICAgc2V0Um91dGVFbnRyeShuZXh0RW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFJvdXRlRW50cnkobmV4dEVudHJ5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkaXNwb3NlKCk7XG4gICAgfTtcblxuICAgIC8vIE5vdGU6IHRoaXMgaG9vayB1cGRhdGVzIHJvdXRlRW50cnkgbWFudWFsbHk7IHdlIGV4Y2x1ZGUgdGhhdCB2YXJpYWJsZVxuICAgIC8vIGZyb20gdGhlIGhvb2sgZGVwcyB0byBhdm9pZCByZWNvbXB1dGluZyB0aGUgZWZmZWN0IGFmdGVyIGVhY2ggY2hhbmdlXG4gICAgLy8gdHJpZ2dlcmVkIGJ5IHRoZSBlZmZlY3QgaXRzZWxmLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3JvdXRlcl0pO1xuXG4gIC8vIFRoZSBjdXJyZW50IHJvdXRlIHZhbHVlIGlzIGFuIGFycmF5IG9mIG1hdGNoaW5nIGVudHJpZXMgLSBvbmUgZW50cnkgcGVyXG4gIC8vIGxldmVsIG9mIHJvdXRlcyAodG8gYWxsb3cgbmVzdGVkIHJvdXRlcykuIFdlIGhhdmUgdG8gbWFwIGVhY2ggb25lIHRvIGFcbiAgLy8gUm91dGVDb21wb25lbnQgdG8gYWxsb3cgc3VzcGVuZGluZywgYW5kIGFsc28gcGFzcyBpdHMgY2hpbGRyZW4gY29ycmVjdGx5LlxuICAvLyBDb25jZXB0dWFsbHksIHdlIHdhbnQgdGhpcyBzdHJ1Y3R1cmU6XG4gIC8vIGBgYFxuICAvLyA8Um91dGVDb21wb25lbnRcbiAgLy8gICBjb21wb25lbnQ9e2VudHJ5WzBdLmNvbXBvbmVudH1cbiAgLy8gICBwcmVwYXJlZD17ZW50cnJ5WzBdLnByZXBhcmVkfT5cbiAgLy8gICA8Um91dGVDb21wb25lbnRcbiAgLy8gICAgIGNvbXBvbmVudD17ZW50cnlbMV0uY29tcG9uZW50fVxuICAvLyAgICAgcHJlcGFyZWQ9e2VudHJ5WzFdLnByZXBhcmVkfT5cbiAgLy8gICAgICAgLy8gY29udGludWUgZm9yIG5lc3RlZCBpdGVtcy4uLlxuICAvLyAgIDwvUm91dGVDb21wb25lbnQ+XG4gIC8vIDwvUm91dGVDb21wb25lbnQ+XG4gIC8vIGBgYFxuICAvLyBUbyBhY2hpZXZlIHRoaXMsIHdlIHJldmVyc2UgdGhlIGxpc3Qgc28gd2UgY2FuIHN0YXJ0IGF0IHRoZSBib3R0b20tbW9zdFxuICAvLyBjb21wb25lbnQsIGFuZCBpdGVyYXRpdmVseSBjb25zdHJ1Y3QgcGFyZW50IGNvbXBvbmVudHMgdyB0aGUgcHJldmlvdXNcbiAgLy8gdmFsdWUgYXMgdGhlIGNoaWxkIG9mIHRoZSBuZXh0IG9uZTpcbiAgLy8gcmV2ZXJzZSBpcyBpbiBwbGFjZSwgYnV0IHdlIHdhbnQgYSBjb3B5IHNvIGNvbmNhdFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Byb21pc2UtZnVuY3Rpb24tYXN5bmNcbiAgY29uc3QgcGVuZGluZ0NvbnRlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gcGVuZGluZztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW2lzUGVuZGluZywgcGVuZGluZ10pO1xuXG4gIC8vIHRoZSBib3R0b20tbW9zdCBjb21wb25lbnQgaXMgc3BlY2lhbCBzaW5jZSBpdCB3aWxsIGhhdmUgbm8gY2hpbGRyZW5cbiAgLy8gKHRob3VnaCB3ZSBjb3VsZCBwcm9iYWJseSBqdXN0IHBhc3MgbnVsbCBjaGlsZHJlbiB0byBpdClcbiAgY29uc3Qgcm91dGVDb21wb25lbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocm91dGVFbnRyeSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFByZXBhcmVkTWF0Y2hSb3V0ZVtdID0gW107XG5cbiAgICBjb25zdCByZXZlcnNlZEl0ZW1zID0gcmVzdWx0XG4gICAgICAuY29uY2F0KHJvdXRlRW50cnkucHJlcGFyZWRNYXRjaC5yb3V0ZXMpXG4gICAgICAucmV2ZXJzZSgpO1xuXG4gICAgY29uc3QgZmlyc3RJdGVtID0gcmV2ZXJzZWRJdGVtc1swXTtcblxuICAgIGlmIChmaXJzdEl0ZW0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IG1haW5Db21wb25lbnQgPSAoXG4gICAgICA8Um91dGVDb21wb25lbnRXcmFwcGVyXG4gICAgICAgIGtleT17Zmlyc3RJdGVtLnBhdGh9XG4gICAgICAgIG1hdGNoPXtyb3V0ZUVudHJ5LnByZXBhcmVkTWF0Y2gubWF0Y2ggPz8gbnVsbH1cbiAgICAgICAgcHJlcGFyZWRSb3V0ZT17Zmlyc3RJdGVtfVxuICAgICAgLz5cbiAgICApO1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXZlcnNlZEl0ZW1zLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgY29uc3QgbmV4dEl0ZW0gPSByZXZlcnNlZEl0ZW1zW2luZGV4XTtcbiAgICAgIG1haW5Db21wb25lbnQgPSAoXG4gICAgICAgIDxSb3V0ZUNvbXBvbmVudFdyYXBwZXJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgIGtleT17bmV4dEl0ZW0hLnBhdGh9XG4gICAgICAgICAgbWF0Y2g9e3JvdXRlRW50cnkucHJlcGFyZWRNYXRjaC5tYXRjaCA/PyBudWxsfVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgcHJlcGFyZWRSb3V0ZT17bmV4dEl0ZW0hfVxuICAgICAgICA+XG4gICAgICAgICAge21haW5Db21wb25lbnR9XG4gICAgICAgIDwvUm91dGVDb21wb25lbnRXcmFwcGVyPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFpbkNvbXBvbmVudDtcbiAgfSwgW3JvdXRlRW50cnldKTtcblxuICAvLyBSb3V0ZXMgY2FuIGVycm9yIHNvIHdyYXAgaW4gYW4gPEVycm9yQm91bmRhcnk+XG4gIC8vIFJvdXRlcyBjYW4gc3VzcGVuZCwgc28gd3JhcCBpbiA8U3VzcGVuc2U+XG4gIHJldHVybiAoXG4gICAgPFN1c3BlbnNlIGZhbGxiYWNrPXtmYWxsYmFja30+XG4gICAgICB7cGVuZGluZ0NvbnRlbnR9XG4gICAgICB7cm91dGVDb21wb25lbnR9XG4gICAgPC9TdXNwZW5zZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJvdXRlclJlbmRlcmVyO1xuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0ZXJSZW5kZXJlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBRVosZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxvQkFBb0IsR0FFckIsTUFBTSxPQUFPLENBQUM7QUFJZixPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLHFCQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBRXZDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQVFkLE1BQU0sVUFBVSxXQUFXO0lBQ3pCLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDWCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFxQ0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFZLEVBQXNCLEVBQUU7SUFDMUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRzlELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FDckMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNYLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE9BQU8sR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNCLFFBQVEsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsR0FBRyxFQUFFO1FBQ0gsT0FBTyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQyxFQUNELEdBQUcsRUFBRTtRQUNILE9BQU8sTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUMsQ0FDRixDQUFDO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxJQUFJLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztJQUNuQyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsaUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7SUFDekMsQ0FBQztJQXNCRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2xDLElBQUksZ0JBQWdCLElBQUksa0JBQWtCLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFJaEUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQyxJQUFJLGlCQUFpQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUF5QixFQUFFLENBQUM7UUFFeEMsTUFBTSxhQUFhLEdBQUcsTUFBTTthQUN6QixNQUFNLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQzthQUM5QyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLGFBQWEsR0FBRyxDQUNsQixLQUFDLHFCQUFxQixJQUVwQixLQUFLLEVBQUUsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQ3BELGFBQWEsRUFBRSxTQUFTLElBRm5CLFNBQVMsQ0FBQyxJQUFJLENBR25CLENBQ0gsQ0FBQztRQUNGLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsYUFBYSxHQUFHLENBQ2QsS0FBQyxxQkFBcUIsSUFHcEIsS0FBSyxFQUFFLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUVwRCxhQUFhLEVBQUUsUUFBUyxZQUV2QixhQUFhLElBTFQsUUFBUyxDQUFDLElBQUksQ0FNRyxDQUN6QixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUl4QixPQUFPLENBQ0wsTUFBQyxRQUFRLElBQUMsUUFBUSxFQUFFLFFBQVEsYUFDekIsY0FBYyxFQUNkLGNBQWMsSUFDTixDQUNaLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixlQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRGVmZXJyZWRWYWx1ZSxcbiAgdXNlTWVtbyxcbiAgdXNlU3luY0V4dGVybmFsU3RvcmUsXG4gIHR5cGUgSlNYLFxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHsgUHJlcGFyZWRNYXRjaFJvdXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgUm91dGVDb21wb25lbnRXcmFwcGVyIGZyb20gJy4vUm91dGVDb21wb25lbnRXcmFwcGVyLmpzJztcblxuY29uc3QgeyB1c2VDb250ZXh0LCBTdXNwZW5zZSB9ID0gUmVhY3Q7XG5cbmxldCBpbmRleCA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIGluZGV4IGZvciBjb21wb25lbnQgaW5zdGFuY2VzLlxuICogVGhpcyBpcyB1c2VkIGludGVybmFsbHkgdG8gZW5zdXJlIHByb3BlciBSZWFjdCByZWNvbmNpbGlhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHVuaXF1ZSBpbmNyZW1lbnRhbCBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0luZGV4KCk6IG51bWJlciB7XG4gIGluZGV4ICs9IDE7XG4gIHJldHVybiBpbmRleDtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFJvdXRlclJlbmRlcmVyIGNvbXBvbmVudC5cbiAqL1xudHlwZSBQcm9wcyA9IHtcbiAgLyoqIEZhbGxiYWNrIFVJIHRvIHNob3cgd2hpbGUgbG9hZGluZyBjb21wb25lbnRzICovXG4gIGZhbGxiYWNrPzogUmVhY3ROb2RlO1xuICAvKiogV2hldGhlciB0byBzaG93IHBlbmRpbmcgY29udGVudCB3aGlsZSBSZWFjdCByZXBvcnRzIGEgdHJhbnNpdGlvbiBlbHNld2hlcmUgKi9cbiAgZW5hYmxlVHJhbnNpdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVSSB0byBzaG93IGR1cmluZyB0cmFuc2l0aW9ucyAod2hlbiBlbmFibGVUcmFuc2l0aW9uIGlzIHRydWUpICovXG4gIHBlbmRpbmc/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIE1haW4gcm91dGVyIHJlbmRlcmVyIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHRoZSBjdXJyZW50IHJvdXRlLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGFjY2Vzc2VzIHRoZSBjdXJyZW50IHJvdXRlIGVudHJ5IGZyb20gUm91dGluZ0NvbnRleHQgYW5kIHJlbmRlcnNcbiAqIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnRzLiBJdCBzdXBwb3J0cyBSZWFjdCBTdXNwZW5zZSBmb3IgbGF6eS1sb2FkZWQgY29tcG9uZW50c1xuICogYW5kIGNhbiBvcHRpb25hbGx5IGRlZmVyIHZpc2libGUgcm91dGUgY2hhbmdlcyBmb3Igc21vb3RoZXIgbmF2aWdhdGlvbi5cbiAqXG4gKiBUaGUgY29tcG9uZW50IGhhbmRsZXMgbmVzdGVkIHJvdXRlcyBieSBjcmVhdGluZyBhIGhpZXJhcmNoeSBvZiBSb3V0ZUNvbXBvbmVudFdyYXBwZXJcbiAqIGNvbXBvbmVudHMsIHdoZXJlIGVhY2ggbGV2ZWwgY2FuIHJlbmRlciBpdHMgb3duIGNvbXBvbmVudCBhbmQgY2hpbGRyZW4uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogLy8gQmFzaWMgdXNhZ2Ugd2l0aCBTdXNwZW5zZSBmYWxsYmFja1xuICogPFJvdXRlclJlbmRlcmVyIGZhbGxiYWNrPXs8ZGl2PkxvYWRpbmcuLi48L2Rpdj59IC8+XG4gKlxuICogLy8gV2l0aCBSZWFjdCAxOCB0cmFuc2l0aW9uc1xuICogPFJvdXRlclJlbmRlcmVyXG4gKiAgIGVuYWJsZVRyYW5zaXRpb25cbiAqICAgZmFsbGJhY2s9ezxkaXY+TG9hZGluZy4uLjwvZGl2Pn1cbiAqICAgcGVuZGluZz17PGRpdj5OYXZpZ2F0aW5nLi4uPC9kaXY+fVxuICogLz5cbiAqIGBgYFxuICovXG5jb25zdCBSb3V0ZXJSZW5kZXJlciA9IChwcm9wczogUHJvcHMpOiBKU1guRWxlbWVudCB8IG51bGwgPT4ge1xuICBjb25zdCB7IGZhbGxiYWNrLCBwZW5kaW5nLCBlbmFibGVUcmFuc2l0aW9uID0gZmFsc2UgfSA9IHByb3BzO1xuXG4gIC8vIEFjY2VzcyB0aGUgcm91dGVyIGNvbnRleHRcbiAgY29uc3Qgcm91dGVyID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG5cbiAgY29uc3Qgcm91dGVFbnRyeSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIChjYWxsYmFjaykgPT4ge1xuICAgICAgaWYgKHJvdXRlciA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByb3V0ZXIuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgKCkgPT4ge1xuICAgICAgcmV0dXJuIHJvdXRlcj8uZ2V0KCk7XG4gICAgfSxcbiAgICAoKSA9PiB7XG4gICAgICByZXR1cm4gcm91dGVyPy5nZXQoKTtcbiAgICB9LFxuICApO1xuICBjb25zdCBkZWZlcnJlZFJvdXRlRW50cnkgPSB1c2VEZWZlcnJlZFZhbHVlKHJvdXRlRW50cnkpO1xuICBsZXQgdmlzaWJsZVJvdXRlRW50cnkgPSByb3V0ZUVudHJ5O1xuICBpZiAoZW5hYmxlVHJhbnNpdGlvbikge1xuICAgIHZpc2libGVSb3V0ZUVudHJ5ID0gZGVmZXJyZWRSb3V0ZUVudHJ5O1xuICB9XG5cbiAgLy8gVGhlIGN1cnJlbnQgcm91dGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgbWF0Y2hpbmcgZW50cmllcyAtIG9uZSBlbnRyeSBwZXJcbiAgLy8gbGV2ZWwgb2Ygcm91dGVzICh0byBhbGxvdyBuZXN0ZWQgcm91dGVzKS4gV2UgaGF2ZSB0byBtYXAgZWFjaCBvbmUgdG8gYVxuICAvLyBSb3V0ZUNvbXBvbmVudCB0byBhbGxvdyBzdXNwZW5kaW5nLCBhbmQgYWxzbyBwYXNzIGl0cyBjaGlsZHJlbiBjb3JyZWN0bHkuXG4gIC8vIENvbmNlcHR1YWxseSwgd2Ugd2FudCB0aGlzIHN0cnVjdHVyZTpcbiAgLy8gYGBgXG4gIC8vIDxSb3V0ZUNvbXBvbmVudFxuICAvLyAgIGNvbXBvbmVudD17ZW50cnlbMF0uY29tcG9uZW50fVxuICAvLyAgIHByZXBhcmVkPXtlbnRycnlbMF0ucHJlcGFyZWR9PlxuICAvLyAgIDxSb3V0ZUNvbXBvbmVudFxuICAvLyAgICAgY29tcG9uZW50PXtlbnRyeVsxXS5jb21wb25lbnR9XG4gIC8vICAgICBwcmVwYXJlZD17ZW50cnlbMV0ucHJlcGFyZWR9PlxuICAvLyAgICAgICAvLyBjb250aW51ZSBmb3IgbmVzdGVkIGl0ZW1zLi4uXG4gIC8vICAgPC9Sb3V0ZUNvbXBvbmVudD5cbiAgLy8gPC9Sb3V0ZUNvbXBvbmVudD5cbiAgLy8gYGBgXG4gIC8vIFRvIGFjaGlldmUgdGhpcywgd2UgcmV2ZXJzZSB0aGUgbGlzdCBzbyB3ZSBjYW4gc3RhcnQgYXQgdGhlIGJvdHRvbS1tb3N0XG4gIC8vIGNvbXBvbmVudCwgYW5kIGl0ZXJhdGl2ZWx5IGNvbnN0cnVjdCBwYXJlbnQgY29tcG9uZW50cyB3IHRoZSBwcmV2aW91c1xuICAvLyB2YWx1ZSBhcyB0aGUgY2hpbGQgb2YgdGhlIG5leHQgb25lOlxuICAvLyByZXZlcnNlIGlzIGluIHBsYWNlLCBidXQgd2Ugd2FudCBhIGNvcHkgc28gY29uY2F0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJvbWlzZS1mdW5jdGlvbi1hc3luY1xuICBjb25zdCBwZW5kaW5nQ29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChlbmFibGVUcmFuc2l0aW9uICYmIGRlZmVycmVkUm91dGVFbnRyeSAhPT0gcm91dGVFbnRyeSkge1xuICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtkZWZlcnJlZFJvdXRlRW50cnksIGVuYWJsZVRyYW5zaXRpb24sIHBlbmRpbmcsIHJvdXRlRW50cnldKTtcblxuICAvLyB0aGUgYm90dG9tLW1vc3QgY29tcG9uZW50IGlzIHNwZWNpYWwgc2luY2UgaXQgd2lsbCBoYXZlIG5vIGNoaWxkcmVuXG4gIC8vICh0aG91Z2ggd2UgY291bGQgcHJvYmFibHkganVzdCBwYXNzIG51bGwgY2hpbGRyZW4gdG8gaXQpXG4gIGNvbnN0IHJvdXRlQ29tcG9uZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHZpc2libGVSb3V0ZUVudHJ5ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogUHJlcGFyZWRNYXRjaFJvdXRlW10gPSBbXTtcblxuICAgIGNvbnN0IHJldmVyc2VkSXRlbXMgPSByZXN1bHRcbiAgICAgIC5jb25jYXQodmlzaWJsZVJvdXRlRW50cnkucHJlcGFyZWRNYXRjaC5yb3V0ZXMpXG4gICAgICAucmV2ZXJzZSgpO1xuXG4gICAgY29uc3QgZmlyc3RJdGVtID0gcmV2ZXJzZWRJdGVtc1swXTtcblxuICAgIGlmIChmaXJzdEl0ZW0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IG1haW5Db21wb25lbnQgPSAoXG4gICAgICA8Um91dGVDb21wb25lbnRXcmFwcGVyXG4gICAgICAgIGtleT17Zmlyc3RJdGVtLnBhdGh9XG4gICAgICAgIG1hdGNoPXt2aXNpYmxlUm91dGVFbnRyeS5wcmVwYXJlZE1hdGNoLm1hdGNoID8/IG51bGx9XG4gICAgICAgIHByZXBhcmVkUm91dGU9e2ZpcnN0SXRlbX1cbiAgICAgIC8+XG4gICAgKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgcmV2ZXJzZWRJdGVtcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGNvbnN0IG5leHRJdGVtID0gcmV2ZXJzZWRJdGVtc1tpbmRleF07XG4gICAgICBtYWluQ29tcG9uZW50ID0gKFxuICAgICAgICA8Um91dGVDb21wb25lbnRXcmFwcGVyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICBrZXk9e25leHRJdGVtIS5wYXRofVxuICAgICAgICAgIG1hdGNoPXt2aXNpYmxlUm91dGVFbnRyeS5wcmVwYXJlZE1hdGNoLm1hdGNoID8/IG51bGx9XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICBwcmVwYXJlZFJvdXRlPXtuZXh0SXRlbSF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWFpbkNvbXBvbmVudH1cbiAgICAgICAgPC9Sb3V0ZUNvbXBvbmVudFdyYXBwZXI+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBtYWluQ29tcG9uZW50O1xuICB9LCBbdmlzaWJsZVJvdXRlRW50cnldKTtcblxuICAvLyBSb3V0ZXMgY2FuIGVycm9yIHNvIHdyYXAgaW4gYW4gPEVycm9yQm91bmRhcnk+XG4gIC8vIFJvdXRlcyBjYW4gc3VzcGVuZCwgc28gd3JhcCBpbiA8U3VzcGVuc2U+XG4gIHJldHVybiAoXG4gICAgPFN1c3BlbnNlIGZhbGxiYWNrPXtmYWxsYmFja30+XG4gICAgICB7cGVuZGluZ0NvbnRlbnR9XG4gICAgICB7cm91dGVDb21wb25lbnR9XG4gICAgPC9TdXNwZW5zZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJvdXRlclJlbmRlcmVyO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAKtB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAgBlD,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,IAAI;IAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAEjC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAi0BjC"}
1
+ {"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAKtB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAgBlD,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,IAAI;IAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAEjC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CA00BjC"}
@@ -27,6 +27,7 @@ export default function createRouter(routes, options = {}) {
27
27
  let pendingNavigationOrigin;
28
28
  let lastNavigationOrigin = 'external';
29
29
  let lastPreloadSignature = null;
30
+ let routerDisposed = false;
30
31
  function normalizeLocation(location) {
31
32
  let pathnameValue = '';
32
33
  if (typeof location.pathname === 'string') {
@@ -47,6 +48,9 @@ export default function createRouter(routes, options = {}) {
47
48
  };
48
49
  }
49
50
  function emitEvent(event) {
51
+ if (routerDisposed) {
52
+ return;
53
+ }
50
54
  registry.emitEvent(event);
51
55
  }
52
56
  function mapOrigin(raw) {
@@ -594,10 +598,15 @@ export default function createRouter(routes, options = {}) {
594
598
  getPreparedSegments,
595
599
  };
596
600
  function cleanup() {
601
+ if (routerDisposed) {
602
+ return;
603
+ }
604
+ routerDisposed = true;
597
605
  disposeHistory();
606
+ history.dispose();
598
607
  subscribers.clear();
599
608
  registry.dispose();
600
609
  }
601
610
  return { context, cleanup };
602
611
  }
603
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsS0FBSyxJQUFJLFlBQVksR0FHdEIsTUFBTSx1QkFBdUIsQ0FBQztBQWUvQixPQUFPLEVBQ0wsNkJBQTZCLEdBTTlCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsT0FBTyxFQUNMLHdCQUF3QixHQUd6QixNQUFNLGNBQWMsQ0FBQztBQXVGdEIsTUFBTSxDQUFDLE9BQU8sVUFBVSxZQUFZLENBSWxDLE1BQTJCLEVBQzNCLFVBQXlDLEVBQUU7SUFHM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUVyQyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FDNUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FDL0IsQ0FBQztJQUVGLElBQUksYUFBbUMsQ0FBQztJQUN4QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUMsYUFBYSxHQUFJLE9BQU8sQ0FBQyxPQUEwQixFQUFFLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxDQUFDO0lB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QUM7Z0JBQ04sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7b0JBQzVDLE9BQU8sRUFBRSxjQUFjO2lCQUN4QixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxHQUFHLFdBQVc7b0JBQ2QsWUFBWTtpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELFdBQVc7UUFDWCxtQkFBbUI7S0FDMEIsQ0FBQztJQUdoRCxTQUFTLE9BQU87UUFDZCxjQUFjLEVBQUUsQ0FBQztRQUNqQixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFJvdXRlcyB9IGZyb20gJy4uL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgQnJvd3Nlckhpc3RvcnkgfSBmcm9tICcuLi9oaXN0b3J5L2luZGV4LmpzJztcbmltcG9ydCB7IGdldE1hdGNoZWRSb3V0ZSwgcHJlcGFyZU1hdGNoIH0gZnJvbSAnLi4vdG9vbHMuanMnO1xuaW1wb3J0IHsgcGFyc2VSYXdRdWVyeSB9IGZyb20gJy4uL3Rvb2xzL3F1ZXJ5LmpzJztcbmltcG9ydCBidWlsZENvbWJpbmVkU2VhcmNoIGZyb20gJy4uL3Rvb2xzL2J1aWxkQ29tYmluZWRTZWFyY2guanMnO1xuaW1wb3J0IHtcbiAgRklMVEVSX09QRVJBVE9SUyxcbiAgcGFyc2UgYXMgcGFyc2VGaWx0ZXJzLFxuICB0eXBlIERpYWdub3N0aWMgYXMgRmlsdGVyRGlhZ25vc3RpYyxcbiAgdHlwZSBTY2hlbWEgYXMgRmlsdGVyU2NoZW1hLFxufSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnknO1xuaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5pbXBvcnQge1xuICB0eXBlIFJvdXRlRW50cnksXG4gIHR5cGUgUm91dGluZ0NvbnRleHRUeXBlLFxuICB0eXBlIFN1YnNjcmliZUNhbGxiYWNrLFxuICB0eXBlIEFueVJvdXRlLFxuICB0eXBlIFByZXBhcmVkQWNjZXNzLFxuICB0eXBlIE5hdmlnYXRlT3ZlcmxvYWRzLFxuICB0eXBlIFByZWxvYWRUYXJnZXQsXG4gIHR5cGUgUHJlcGFyZWRSb3V0ZVNlZ21lbnRTbmFwc2hvdCxcbiAgdHlwZSBSYXdRdWVyeSxcbiAgdHlwZSBVbmtub3duRmlsdGVycyxcbiAgdHlwZSBVbmtub3duUXVlcnlTaGFwZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlSW5zdHJ1bWVudGF0aW9uUmVnaXN0cnksXG4gIHR5cGUgSW5zdHJ1bWVudGF0aW9uQVBJLFxuICB0eXBlIFJvdXRlckVudHJ5U25hcHNob3QsXG4gIHR5cGUgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbiAgdHlwZSBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlLFxuICB0eXBlIFJvdXRlckV2ZW50LFxufSBmcm9tICcuLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgSGlzdG9yeURlYnVnQ29udGV4dCB9IGZyb20gJy4uL2hpc3RvcnkvdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgaXNSb3V0ZXJOYXZpZ2F0aW9uU291cmNlLFxuICB0eXBlIFJvdXRlckhpc3RvcnlBY3Rpb25WYWx1ZSxcbiAgdHlwZSBSb3V0ZXJQcmVsb2FkTW9kZVZhbHVlLFxufSBmcm9tICcuLi92YWx1ZXMuanMnO1xuXG50eXBlIFJvdXRlclF1ZXJ5U2NoZW1hID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkO1xudHlwZSBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0PiA9IFJvdXRlRW50cnk8XG4gIFBhcmFtRGF0YSxcbiAgUm91dGVyUXVlcnlTY2hlbWEsXG4gIFRDb250ZXh0XG4+O1xudHlwZSBQYXJzZWRTZWFyY2hTdGF0ZSA9IHtcbiAgcXVlcnk6IFJhd1F1ZXJ5O1xuICBmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnM7XG4gIGZpbHRlckRpYWdub3N0aWNzPzogRmlsdGVyRGlhZ25vc3RpY1tdO1xufTtcbnR5cGUgUHJlcGFyZVF1ZXJ5SW5wdXQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBmb3IgdGhlIGNyZWF0ZVJvdXRlciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSIGV4dGVuZHMgQW55Um91dGVbXT4gPSB7XG4gIC8qKiBGdW5jdGlvbiB0byBjbGVhbiB1cCByb3V0ZXIgbGlzdGVuZXJzIGFuZCByZXNvdXJjZXMgKi9cbiAgY2xlYW51cDogKCkgPT4gdm9pZDtcbiAgLyoqIFJvdXRlciBjb250ZXh0IG9iamVjdCBmb3IgdGhlIFJlYWN0IENvbnRleHQgUHJvdmlkZXIgKi9cbiAgY29udGV4dDogUm91dGluZ0NvbnRleHRUeXBlPFxuICAgIFBhcmFtRGF0YSxcbiAgICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgICBVbmtub3duUXVlcnlTaGFwZSxcbiAgICBUQ29udGV4dFxuICA+ICZcbiAgICBQcmVwYXJlZEFjY2VzczxSPiAmIHtcbiAgICAgIG5hdmlnYXRlOiBOYXZpZ2F0ZU92ZXJsb2FkczxSPjtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGxldGUgcm91dGVyIHN5c3RlbSBmcm9tIHJvdXRlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFRoaXMgcm91dGVyIGlzIGJ1aWx0IGZyb20gdGhlIHNhbWUgcHJpbWl0aXZlcyBhcyByZWFjdC1yb3V0ZXIgYnV0IHdpdGggYWRkaXRpb25hbFxuICogZmVhdHVyZXMgZm9yIGRhdGEgcHJlbG9hZGluZyBhbmQgY29kZSBzcGxpdHRpbmcuIEVhY2ggcm91dGUgY2FuIGNvbnRhaW4gYm90aCBhXG4gKiBDb21wb25lbnQgYW5kIGEgcHJlcGFyZSgpIGZ1bmN0aW9uIHRoYXQgY2FuIHByZWxvYWQgZGF0YSBmb3IgdGhlIGNvbXBvbmVudC5cbiAqXG4gKiBUaGUgcm91dGVyIHdhdGNoZXMgZm9yIGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgbG9jYXRpb24gdmlhIHRoZSBIVE1MNSBIaXN0b3J5IEFQSSxcbiAqIG1hcHMgdGhlIGxvY2F0aW9uIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJvdXRlIGVudHJ5LCBhbmQgdGhlbiBwcmVsb2FkcyB0aGUgY29kZVxuICogYW5kIGRhdGEgZm9yIHRoZSByb3V0ZSBiZWZvcmUgcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSByb3V0ZXMgLSBBcnJheSBvZiByb3V0ZSBjb25maWd1cmF0aW9uc1xuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJvdXRlciBjb250ZXh0IGFuZCBjbGVhbnVwIGZ1bmN0aW9uXG4gKlxuICBwcmVwYXJlZE1hdGNoOiBwcmVwYXJlTWF0Y2gocm91dGUsIHBhcnNlUmF3UXVlcnkoaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gpKSxcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICcvdXNlcnMvOmlkJyxcbiAqICAgICByZXNvdXJjZVBhZ2U6IGdldFJlc291cmNlUGFnZSgnVXNlclByb2ZpbGUnLCAoKSA9PiBpbXBvcnQoJy4vVXNlclByb2ZpbGUnKSksXG4gKiAgICAgcHJlcGFyZTogKHsgdmFyaWFibGVzIH0pID0+ICh7IHVzZXJJZDogdmFyaWFibGVzLmlkIH0pXG4gKiAgIH1cbiAqIF07XG4gKlxuICogY29uc3QgeyBjb250ZXh0LCBjbGVhbnVwIH0gPSBjcmVhdGVSb3V0ZXIocm91dGVzKTtcbiAqXG4gKiAvLyBVc2UgaW4gUmVhY3QgYXBwXG4gKiA8Um91dGluZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICogICA8Um91dGVyUmVuZGVyZXIgLz5cbiAqIDwvUm91dGluZ0NvbnRleHQuUHJvdmlkZXI+XG4gKiBgYGBcbiAqL1xuLyoqXG4gKiBDcmVhdGUgYSByb3V0ZXIgKHR5cGVkIG92ZXJsb2FkKS4gV2hlbiBjYWxsZWQgd2l0aCBhIGNvbnN0IHR1cGxlIG9mIHJvdXRlcywgZ2VuZXJpY3MgYXJlIHByZXNlcnZlZC5cbiAqL1xuLyoqXG4gKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBgY3JlYXRlUm91dGVyYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlUm91dGVyT3B0aW9uczxUQ29udGV4dD4gPSB7XG4gIC8qKiBJbnN0cnVtZW50YXRpb25zIHRvIGF0dGFjaCB0byB0aGUgcm91dGVyIChEZXZUb29scyBicmlkZ2UsIGxvZ2dlciwgLi4uKS4gKi9cbiAgaW5zdHJ1bWVudGF0aW9ucz86IEluc3RydW1lbnRhdGlvbkFQSVtdO1xuICAvKiogU3RhdGljIGNvbnRleHQgdmFsdWUgb3IgbGF6eSBpbml0aWFsaXplciBmb3IgdGhlIHJvdXRlci4gKi9cbiAgY29udGV4dD86IFRDb250ZXh0IHwgKCgpID0+IFRDb250ZXh0KTtcbiAgLyoqIFJlc29sdmUgYSBmcmVzaCBjb250ZXh0IHZhbHVlIHBlciBuYXZpZ2F0aW9uLiAqL1xuICBnZXRDb250ZXh0PzogKCkgPT4gVENvbnRleHQ7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByb3V0ZXIgaW5zdGFuY2UgZnJvbSBhIHJvdXRlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIFJvdXRlIGRlZmluaXRpb25zIHRvIHJlZ2lzdGVyLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBpbnN0cnVtZW50YXRpb24gc2V0dGluZ3MgdXNlZCBmb3IgZXhwb3NpbmcgZGV2ZWxvcG1lbnQgdG9vbGluZy5cbiAqIEBwYXJhbSBvcHRpb25zLmluc3RydW1lbnRhdGlvbnMgLSBJbnN0cnVtZW50YXRpb25zIGludm9rZWQgb24gcm91dGVyIGV2ZW50cyAoZGV2ZWxvcG1lbnQgb25seSkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBSIGV4dGVuZHMgQW55Um91dGVbXSA9IEFueVJvdXRlW10sXG4+KFxuICByb3V0ZXM6IFsuLi5SXSB8IEFueVJvdXRlW10sXG4gIG9wdGlvbnM6IENyZWF0ZVJvdXRlck9wdGlvbnM8VENvbnRleHQ+ID0ge30sXG4pOiBDcmVhdGVSb3V0ZXJSZXR1cm48VENvbnRleHQsIFI+IHtcbiAgLy8gSW5pdGlhbGl6ZSBicm93c2VyIGhpc3RvcnkgbWFuYWdlclxuICBjb25zdCBoaXN0b3J5ID0gbmV3IEJyb3dzZXJIaXN0b3J5KCk7XG5cbiAgY29uc3QgcmVnaXN0cnkgPSBjcmVhdGVJbnN0cnVtZW50YXRpb25SZWdpc3RyeShcbiAgICBvcHRpb25zLmluc3RydW1lbnRhdGlvbnMgPz8gW10sXG4gICk7XG5cbiAgbGV0IHN0YXRpY0NvbnRleHQ6IFRDb250ZXh0IHwgdW5kZWZpbmVkO1xuICBpZiAob3B0aW9ucy5nZXRDb250ZXh0ID09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29udGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgc3RhdGljQ29udGV4dCA9IChvcHRpb25zLmNvbnRleHQgYXMgKCkgPT4gVENvbnRleHQpKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRpY0NvbnRleHQgPSBvcHRpb25zLmNvbnRleHQ7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlc29sdmUgdGhlIGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uICovXG4gIGZ1bmN0aW9uIHJlc29sdmVDb250ZXh0KCk6IFRDb250ZXh0IHtcbiAgICBpZiAob3B0aW9ucy5nZXRDb250ZXh0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmdldENvbnRleHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRpY0NvbnRleHQgYXMgVENvbnRleHQ7XG4gIH1cblxuICBsZXQgcGVuZGluZ05hdmlnYXRpb25PcmlnaW46IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UgfCB1bmRlZmluZWQ7XG4gIGxldCBsYXN0TmF2aWdhdGlvbk9yaWdpbjogUm91dGVyTmF2aWdhdGlvblNvdXJjZSA9ICdleHRlcm5hbCc7XG4gIGxldCBsYXN0UHJlbG9hZFNpZ25hdHVyZToge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgcGFydGlhbCBsb2NhdGlvbiBvYmplY3QgaW50byBhIGZ1bGwgbG9jYXRpb24gc3RydWN0dXJlIHdpdGggc3RyaW5nIGZpZWxkcy5cbiAgICovXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2F0aW9uKGxvY2F0aW9uOiB7XG4gICAgcGF0aG5hbWU6IHN0cmluZztcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG4gICAgaGFzaD86IHN0cmluZztcbiAgfSk6IHsgcGF0aG5hbWU6IHN0cmluZzsgc2VhcmNoOiBzdHJpbmc7IGhhc2g6IHN0cmluZyB9IHtcbiAgICBsZXQgcGF0aG5hbWVWYWx1ZSA9ICcnO1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24ucGF0aG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwYXRobmFtZVZhbHVlID0gbG9jYXRpb24ucGF0aG5hbWU7XG4gICAgfVxuICAgIGxldCBzZWFyY2hWYWx1ZSA9ICcnO1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24uc2VhcmNoID09PSAnc3RyaW5nJykge1xuICAgICAgc2VhcmNoVmFsdWUgPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgfVxuICAgIGxldCBoYXNoVmFsdWUgPSAnJztcbiAgICBpZiAodHlwZW9mIGxvY2F0aW9uLmhhc2ggPT09ICdzdHJpbmcnKSB7XG4gICAgICBoYXNoVmFsdWUgPSBsb2NhdGlvbi5oYXNoO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aG5hbWU6IHBhdGhuYW1lVmFsdWUsXG4gICAgICBzZWFyY2g6IHNlYXJjaFZhbHVlLFxuICAgICAgaGFzaDogaGFzaFZhbHVlLFxuICAgIH07XG4gIH1cblxuICAvKiogRW1pdHMgYSByb3V0ZXIgZXZlbnQgdG8gZXZlcnkgcmVnaXN0ZXJlZCBpbnN0cnVtZW50YXRpb24uICovXG4gIGZ1bmN0aW9uIGVtaXRFdmVudChldmVudDogUm91dGVyRXZlbnQpOiB2b2lkIHtcbiAgICByZWdpc3RyeS5lbWl0RXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIGNvZXJjZSBhbiBhcmJpdHJhcnkgc3RyaW5nIGludG8gYSBrbm93biBuYXZpZ2F0aW9uIHNvdXJjZS5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcE9yaWdpbihyYXc/OiBzdHJpbmcpOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNSb3V0ZXJOYXZpZ2F0aW9uU291cmNlKHJhdykpIHtcbiAgICAgIHJldHVybiByYXc7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJPcGVyYXRvcnMgPSBuZXcgU2V0PHN0cmluZz4oRklMVEVSX09QRVJBVE9SUyk7XG5cbiAgLyoqIEhldXJpc3RpYzogZGV0ZWN0IGZpbHRlci1saWtlIG9iamVjdHMgd2hlbiBjYWxsZXJzIHBhc3MgZmlsdGVyIHJlY29yZHMgdG8gbmF2aWdhdGUuICovXG4gIGZ1bmN0aW9uIGxvb2tzTGlrZUZpbHRlcnModmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZCA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGZvciAoY29uc3QgZmllbGRWYWx1ZSBvZiBPYmplY3QudmFsdWVzKHJlY29yZCkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZmllbGRWYWx1ZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBmaWVsZFZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAhQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKVxuICAgICAgKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZpZWxkVmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGZpbHRlck9wZXJhdG9ycy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIG9yaWdpbiBmb3IgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBldmVudC5cbiAgICovXG4gIC8qKiBSZXNvbHZlcyB0aGUgbmF2aWdhdGlvbiBzb3VyY2UgY29tYmluaW5nIGhpc3RvcnkgY29udGV4dCBhbmQgcGVuZGluZyBpbnRlbnQuICovXG4gIGZ1bmN0aW9uIHJlc29sdmVOYXZpZ2F0aW9uT3JpZ2luKFxuICAgIGNvbnRleHQ/OiBIaXN0b3J5RGVidWdDb250ZXh0IHwgbnVsbCxcbiAgKTogUm91dGVyTmF2aWdhdGlvblNvdXJjZSB7XG4gICAgY29uc3QgZmFsbGJhY2tPcmlnaW4gPSBwZW5kaW5nTmF2aWdhdGlvbk9yaWdpbjtcbiAgICBsZXQgb3JpZ2luOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY29udGV4dE9yaWdpbiA9IGNvbnRleHQ/Lm9yaWdpbjtcbiAgICBpZiAoY29udGV4dE9yaWdpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcmlnaW4gPSBtYXBPcmlnaW4oY29udGV4dE9yaWdpbik7XG4gICAgfVxuXG4gICAgb3JpZ2luID8/PSBmYWxsYmFja09yaWdpbjtcbiAgICBvcmlnaW4gPz89ICdleHRlcm5hbCc7XG4gICAgcGVuZGluZ05hdmlnYXRpb25PcmlnaW4gPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG9yaWdpbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgaW5uZXItbW9zdCBtYXRjaGVkIHJvdXRlIHBhdGggZnJvbSBhIHJvdXRlIGVudHJ5IHdoZW4gYXZhaWxhYmxlLlxuICAgKi9cbiAgLyoqIFJldHVybnMgdGhlIGRlZXBlc3QgbWF0Y2hlZCByb3V0ZSBwYXRoIGZyb20gYSByb3V0ZSBlbnRyeSBpZiBhdmFpbGFibGUuICovXG4gIGZ1bmN0aW9uIHJlYWRNYXRjaGVkUm91dGVQYXRoKFxuICAgIGVudHJ5OiBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0PiB8IHVuZGVmaW5lZCxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZFJvdXRlID0gZW50cnkucm91dGU7XG4gICAgaWYgKG1hdGNoZWRSb3V0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRSb3V0ZXMgPSBtYXRjaGVkUm91dGUucm91dGUucm91dGVzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkUm91dGVzKSkge1xuICAgICAgY29uc3QgbGFzdENoaWxkID0gY2hpbGRSb3V0ZXMuYXQoLTEpO1xuICAgICAgaWYgKGxhc3RDaGlsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGxhc3RDaGlsZFJlY29yZCA9IGxhc3RDaGlsZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gbGFzdENoaWxkUmVjb3JkLnBhdGg7XG4gICAgICAgIGlmICh0eXBlb2YgY2hpbGRQYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBjaGlsZFBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgcm9vdFBhdGggPSBtYXRjaGVkUm91dGUucm91dGUucGF0aDtcbiAgICBpZiAodHlwZW9mIHJvb3RQYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJvb3RQYXRoO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGRlZXBlc3QgYWN0aXZlIHF1ZXJ5IHNjaGVtYSBmb3IgYSBtYXRjaGVkIHJvdXRlLiAqL1xuICBmdW5jdGlvbiByZWFkQWN0aXZlUXVlcnlTY2hlbWEoXG4gICAgcm91dGU6IFJvdXRlckVudHJ5U3RhdGU8VENvbnRleHQ+Wydyb3V0ZSddLFxuICApOiBSb3V0ZXJRdWVyeVNjaGVtYSB7XG4gICAgcmV0dXJuIHJvdXRlPy5yb3V0ZS5yb3V0ZXMuYXQoLTEpPy5xdWVyeVNjaGVtYTtcbiAgfVxuXG4gIC8qKiBQYXJzZXMgcmF3IHF1ZXJ5IGFuZCB0eXBlZCBmaWx0ZXJzIGZvciB0aGUgcHJvdmlkZWQgc2VhcmNoIHN0cmluZy4gKi9cbiAgZnVuY3Rpb24gcGFyc2VTZWFyY2hTdGF0ZShcbiAgICBzZWFyY2g6IHN0cmluZyxcbiAgICBxdWVyeVNjaGVtYTogUm91dGVyUXVlcnlTY2hlbWEsXG4gICk6IFBhcnNlZFNlYXJjaFN0YXRlIHtcbiAgICBjb25zdCBxdWVyeSA9IHBhcnNlUmF3UXVlcnkoc2VhcmNoKTtcbiAgICBpZiAocXVlcnlTY2hlbWEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHsgcXVlcnkgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUZpbHRlcnMoc2VhcmNoLCBxdWVyeVNjaGVtYSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgZmlsdGVyczogcGFyc2VkLmZpbHRlcnMsXG4gICAgICBmaWx0ZXJEaWFnbm9zdGljczogcGFyc2VkLmRpYWdub3N0aWNzLFxuICAgIH07XG4gIH1cblxuICAvKiogUmVhZHMgYSBwYWdlIG51bWJlciBmcm9tIGVpdGhlciBgcGFnZWAgb3IgYHBhZ2UuZXFgIGZpbHRlciBzaGFwZXMuICovXG4gIGZ1bmN0aW9uIHJlYWRQYWdlVmFsdWUoZmlsdGVycz86IFVua25vd25GaWx0ZXJzKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZmlsdGVycyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJhd1BhZ2UgPSBmaWx0ZXJzLnBhZ2U7XG4gICAgaWYgKHR5cGVvZiByYXdQYWdlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHJhd1BhZ2U7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHJhd1BhZ2UgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHJhd1BhZ2UgPT09ICdvYmplY3QnICYmXG4gICAgICAhQXJyYXkuaXNBcnJheShyYXdQYWdlKSAmJlxuICAgICAgdHlwZW9mIChyYXdQYWdlIGFzIHsgZXE/OiB1bmtub3duIH0pLmVxID09PSAnbnVtYmVyJ1xuICAgICkge1xuICAgICAgcmV0dXJuIChyYXdQYWdlIGFzIHsgZXE6IG51bWJlciB9KS5lcTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBOb3JtYWxpemVzIHRoZSBwYWdlIGZpbHRlciB0byBhIG1pbmltdW0gdmFsdWUgb2YgMSB3aGVuIHByZXNlbnQuICovXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZVBhZ2VGaWx0ZXJzKGZpbHRlcnM/OiBVbmtub3duRmlsdGVycyk6IHtcbiAgICBmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnM7XG4gICAgbm9ybWFsaXplZDogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgcGFnZVZhbHVlID0gcmVhZFBhZ2VWYWx1ZShmaWx0ZXJzKTtcbiAgICBpZiAocGFnZVZhbHVlID09IG51bGwgfHwgcGFnZVZhbHVlID49IDEgfHwgZmlsdGVycyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBub3JtYWxpemVkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgLi4uZmlsdGVycyxcbiAgICAgICAgcGFnZTogeyBlcTogMSB9LFxuICAgICAgfSxcbiAgICAgIG5vcm1hbGl6ZWQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBDb252ZXJ0cyByb3V0ZXIgc2VhcmNoIHN0YXRlIGludG8gdGhlIG9iamVjdCBmb3J3YXJkZWQgdG8gYHByZXBhcmVgLiAqL1xuICBmdW5jdGlvbiBidWlsZFByZXBhcmVRdWVyeUlucHV0KFxuICAgIHN0YXRlOiBQYXJzZWRTZWFyY2hTdGF0ZSxcbiAgICBxdWVyeVNjaGVtYTogUm91dGVyUXVlcnlTY2hlbWEsXG4gICk6IFByZXBhcmVRdWVyeUlucHV0IHtcbiAgICBpZiAocXVlcnlTY2hlbWEgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHN0YXRlLmZpbHRlcnMgPz8ge307XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZS5xdWVyeTtcbiAgfVxuXG4gIC8qKiBCdWlsZHMgYSBzbmFwc2hvdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudCByb3V0ZXIgZW50cnkuICovXG4gIGZ1bmN0aW9uIGJ1aWxkRW50cnlTbmFwc2hvdChcbiAgICBlbnRyeTogUm91dGVyRW50cnlTdGF0ZTxUQ29udGV4dD4sXG4gICk6IFJvdXRlckVudHJ5U25hcHNob3Qge1xuICAgIGNvbnN0IHByZXBhcmVkU2VnbWVudHMgPSBlbnRyeS5wcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcCgoc2VnbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogc2VnbWVudC5wYXRoLFxuICAgICAgICBmdWxsUGF0aDogc2VnbWVudC5mdWxsUGF0aCxcbiAgICAgICAgc2VnbWVudEluZGV4OiBzZWdtZW50LnNlZ21lbnRJbmRleCxcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZTogc2VnbWVudC5wcmVwYXJlZFJlc291cmNlLFxuICAgICAgICByZWRpcmVjdFRvOiBzZWdtZW50LnJlZGlyZWN0VG8sXG4gICAgICAgIGhpZ2hsaWdodElkOiBzZWdtZW50LmhpZ2hsaWdodElkLFxuICAgICAgICBxdWVyeVNjaGVtYTogc2VnbWVudC5xdWVyeVNjaGVtYSxcbiAgICAgICAgcHJlcGFyZWRTdGF0dXM6IHNlZ21lbnQucHJlcGFyZWRSZXNvdXJjZT8uZ2V0U3RhdHVzKCksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2F0aW9uOiBub3JtYWxpemVMb2NhdGlvbihlbnRyeS5sb2NhdGlvbiksXG4gICAgICByb3V0ZVBhdGg6IHJlYWRNYXRjaGVkUm91dGVQYXRoKGVudHJ5KSxcbiAgICAgIHByZXBhcmVkTWF0Y2g6IHtcbiAgICAgICAgc2VnbWVudHM6IHByZXBhcmVkU2VnbWVudHMsXG4gICAgICAgIHJvdXRlczogcHJlcGFyZWRTZWdtZW50cyxcbiAgICAgIH0sXG4gICAgICBmaWx0ZXJzOiBlbnRyeS5maWx0ZXJzLFxuICAgICAgZmlsdGVyRGlhZ25vc3RpY3M6IGVudHJ5LmZpbHRlckRpYWdub3N0aWNzLFxuICAgICAgYWN0aXZlUXVlcnlTY2hlbWE6IGVudHJ5LmFjdGl2ZVF1ZXJ5U2NoZW1hLFxuICAgIH07XG4gIH1cblxuICAvKiogTm90aWZpZXMgaW5zdHJ1bWVudGF0aW9ucyBvZiBhIG5ldyBhY3RpdmUgZW50cnkuICovXG4gIGZ1bmN0aW9uIG5vdGlmeUVudHJ5KGVudHJ5OiBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0Pik6IHZvaWQge1xuICAgIHJlZ2lzdHJ5Lm5vdGlmeUVudHJ5Q2hhbmdlKGJ1aWxkRW50cnlTbmFwc2hvdChlbnRyeSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBkZWR1cGxpY2F0aW9uIGtleSBmb3IgcHJlbG9hZCBldmVudHMuICovXG4gIGZ1bmN0aW9uIGJ1aWxkUHJlbG9hZEtleShcbiAgICBtb2RlOiBSb3V0ZXJQcmVsb2FkTW9kZVZhbHVlLFxuICAgIHBhdGhuYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke21vZGV9OiR7cGF0aG5hbWV9YDtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhIHByZWxvYWQgb3IgcHJlbG9hZC1jb2RlIGluc3RydW1lbnRhdGlvbiBldmVudC4gKi9cbiAgZnVuY3Rpb24gZW1pdFByZWxvYWRFdmVudChcbiAgICBtb2RlOiAnY29kZScgfCAnZnVsbCcsXG4gICAgcGF0aG5hbWU6IHN0cmluZyxcbiAgICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qga2V5ID0gYnVpbGRQcmVsb2FkS2V5KG1vZGUsIHBhdGhuYW1lKTtcbiAgICBjb25zdCByZWNlbnRseVJlY29yZGVkID1cbiAgICAgIGxhc3RQcmVsb2FkU2lnbmF0dXJlICE9PSBudWxsICYmXG4gICAgICBsYXN0UHJlbG9hZFNpZ25hdHVyZS5rZXkgPT09IGtleSAmJlxuICAgICAgbm93IC0gbGFzdFByZWxvYWRTaWduYXR1cmUudGltZXN0YW1wIDwgNTA7XG5cbiAgICBpZiAoIXJlY2VudGx5UmVjb3JkZWQpIHtcbiAgICAgIGVtaXRFdmVudCh7XG4gICAgICAgIGtpbmQ6ICdwcmVsb2FkJyxcbiAgICAgICAgc291cmNlLFxuICAgICAgICB0aW1lc3RhbXA6IG5vdyxcbiAgICAgICAgbG9jYXRpb246IG5vcm1hbGl6ZUxvY2F0aW9uKGhpc3RvcnkubG9jYXRpb24pLFxuICAgICAgICB0YXJnZXRQYXRobmFtZTogcGF0aG5hbWUsXG4gICAgICAgIG1vZGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsYXN0UHJlbG9hZFNpZ25hdHVyZSA9IHsga2V5LCB0aW1lc3RhbXA6IG5vdyB9O1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgaGlzdG9yeSBtdXRhdGlvbiBldmVudCAocHVzaC9yZXBsYWNlL25vcm1hbGl6ZSkuICovXG4gIGZ1bmN0aW9uIGVtaXRIaXN0b3J5RXZlbnQoXG4gICAgYWN0aW9uOiBSb3V0ZXJIaXN0b3J5QWN0aW9uVmFsdWUsXG4gICAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlLFxuICAgIGxvY2F0aW9uOiB7IHBhdGhuYW1lOiBzdHJpbmc7IHNlYXJjaD86IHN0cmluZzsgaGFzaD86IHN0cmluZyB9LFxuICAgIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZCB7XG4gICAgcGVuZGluZ05hdmlnYXRpb25PcmlnaW4gPSBzb3VyY2U7XG4gICAgZW1pdEV2ZW50KHtcbiAgICAgIGtpbmQ6ICdoaXN0b3J5JyxcbiAgICAgIHNvdXJjZSxcbiAgICAgIGFjdGlvbixcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIGxvY2F0aW9uOiBub3JtYWxpemVMb2NhdGlvbihsb2NhdGlvbiksXG4gICAgICBkZXRhaWxzLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQnVpbGQgYSBmbGF0IGxpc3Qgb2Ygcm91dGVzIGZvciBlZmZpY2llbnQgbWF0Y2hpbmdcbiAgY29uc3QgZmxhdFJvdXRlcyA9IGJ1aWxkUm91dGVzKHJvdXRlcyk7XG5cbiAgLy8gRmluZCB0aGUgaW5pdGlhbCByb3V0ZSBtYXRjaCBhbmQgcHJlcGFyZSBpdCBmb3IgcmVuZGVyaW5nXG4gIGNvbnN0IHJvdXRlID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIGhpc3RvcnkubG9jYXRpb24pO1xuICBjb25zdCBpbml0aWFsVW5pZmllZFNjaGVtYSA9IHJlYWRBY3RpdmVRdWVyeVNjaGVtYShyb3V0ZSk7XG4gIGNvbnN0IGluaXRpYWxTZWFyY2hTdGF0ZSA9IHBhcnNlU2VhcmNoU3RhdGUoXG4gICAgaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gsXG4gICAgaW5pdGlhbFVuaWZpZWRTY2hlbWEsXG4gICk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRJbml0aWFsRmlsdGVycyA9IG5vcm1hbGl6ZVBhZ2VGaWx0ZXJzKFxuICAgIGluaXRpYWxTZWFyY2hTdGF0ZS5maWx0ZXJzLFxuICApO1xuICBjb25zdCBpbml0aWFsTG9jYXRpb25TbmFwc2hvdCA9IG5vcm1hbGl6ZUxvY2F0aW9uKGhpc3RvcnkubG9jYXRpb24pO1xuICBsZXQgaW5pdGlhbEluc3RydW1lbnRhdGlvbjpcbiAgICB8IHtcbiAgICAgICAgZW1pdDogKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gdm9pZDtcbiAgICAgICAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICAgICAgICBsb2NhdGlvbjogUm91dGVyTG9jYXRpb25TbmFwc2hvdDtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZDtcbiAgaWYgKHJvdXRlICE9IG51bGwpIHtcbiAgICBpbml0aWFsSW5zdHJ1bWVudGF0aW9uID0ge1xuICAgICAgZW1pdDogKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgICBlbWl0RXZlbnQoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIHNvdXJjZTogbGFzdE5hdmlnYXRpb25PcmlnaW4sXG4gICAgICBsb2NhdGlvbjogaW5pdGlhbExvY2F0aW9uU25hcHNob3QsXG4gICAgfTtcbiAgfVxuICBjb25zdCBpbml0aWFsQ29udGV4dCA9IHJlc29sdmVDb250ZXh0KCk7XG4gIGNvbnN0IHByZXBhcmVkTWF0Y2ggPSBwcmVwYXJlTWF0Y2goXG4gICAgcm91dGUsXG4gICAgYnVpbGRQcmVwYXJlUXVlcnlJbnB1dChcbiAgICAgIHtcbiAgICAgICAgLi4uaW5pdGlhbFNlYXJjaFN0YXRlLFxuICAgICAgICBmaWx0ZXJzOiBub3JtYWxpemVkSW5pdGlhbEZpbHRlcnMuZmlsdGVycyxcbiAgICAgIH0sXG4gICAgICBpbml0aWFsVW5pZmllZFNjaGVtYSxcbiAgICApLFxuICAgIGluaXRpYWxJbnN0cnVtZW50YXRpb24sXG4gICAgaW5pdGlhbENvbnRleHQsXG4gICk7XG4gIC8vIEhlbHBlciB0byBidWlsZCB0aGUgcmF3IHF1ZXJ5IG9iamVjdCBmcm9tIGEgc2VhcmNoIHN0cmluZ1xuICBsZXQgY3VycmVudEVudHJ5OiBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0PiA9IHtcbiAgICBmb3JjZVJlcmVuZGVyOiBmYWxzZSxcbiAgICBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbixcbiAgICByb3V0ZSxcbiAgICBwcmVwYXJlZE1hdGNoLFxuICAgIGNvbnRleHQ6IGluaXRpYWxDb250ZXh0LFxuICAgIHJhd1NlYXJjaDogaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gsXG4gICAgcXVlcnk6IGluaXRpYWxTZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICAvLyB0eXBlZFF1ZXJ5IHJlbW92ZWQgKHVuaWZpZWQgaW50byBmaWx0ZXJzL3F1ZXJ5KVxuICAgIGZpbHRlcnM6IG5vcm1hbGl6ZWRJbml0aWFsRmlsdGVycy5maWx0ZXJzLFxuICAgIGZpbHRlckRpYWdub3N0aWNzOiBpbml0aWFsU2VhcmNoU3RhdGUuZmlsdGVyRGlhZ25vc3RpY3MsXG4gICAgYWN0aXZlUXVlcnlTY2hlbWE6IGluaXRpYWxVbmlmaWVkU2NoZW1hLFxuICB9O1xuXG4gIC8vIEluaXRpYWwgbm9ybWFsaXphdGlvbiBwYXNzIChlLmcuLCBjbGFtcCBwYWdlKVxuICBpZiAoXG4gICAgbm9ybWFsaXplZEluaXRpYWxGaWx0ZXJzLm5vcm1hbGl6ZWQgJiZcbiAgICBpbml0aWFsVW5pZmllZFNjaGVtYSAhPSBudWxsICYmXG4gICAgbm9ybWFsaXplZEluaXRpYWxGaWx0ZXJzLmZpbHRlcnMgIT0gbnVsbFxuICApIHtcbiAgICBjdXJyZW50RW50cnkuZmlsdGVycyA9IG5vcm1hbGl6ZWRJbml0aWFsRmlsdGVycy5maWx0ZXJzO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2ggPSBidWlsZENvbWJpbmVkU2VhcmNoKHtcbiAgICAgIGZpbHRlcnM6IG5vcm1hbGl6ZWRJbml0aWFsRmlsdGVycy5maWx0ZXJzLFxuICAgICAgcXVlcnk6IGluaXRpYWxTZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICAgIHF1ZXJ5U2NoZW1hOiBpbml0aWFsVW5pZmllZFNjaGVtYSxcbiAgICB9KTsgLy8gcmV0dXJucyAnJyBvciBzdHJpbmcgc3RhcnRpbmcgd2l0aCAnPydcbiAgICBpZiAobm9ybWFsaXplZFNlYXJjaCAhPT0gaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gpIHtcbiAgICAgIGVtaXRIaXN0b3J5RXZlbnQoXG4gICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAnbm9ybWFsaXplJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhdGhuYW1lOiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgIHNlYXJjaDogbm9ybWFsaXplZFNlYXJjaCxcbiAgICAgICAgICBoYXNoOiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgeyByZWFzb246ICdpbml0aWFsLXBhZ2UtY2xhbXAnIH0sXG4gICAgICApO1xuICAgICAgY29uc3Qgbm9ybWFsaXplRGVidWdDb250ZXh0OiBIaXN0b3J5RGVidWdDb250ZXh0ID0ge1xuICAgICAgICBvcmlnaW46ICdub3JtYWxpemUnLFxuICAgICAgICB0cmlnZ2VyOiAnbm9ybWFsaXplJyxcbiAgICAgIH07XG4gICAgICBoaXN0b3J5LnNldCh7XG4gICAgICAgIHBhdGhuYW1lOiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICBzZWFyY2g6IG5vcm1hbGl6ZWRTZWFyY2gsXG4gICAgICAgIGhhc2g6ICcnLFxuICAgICAgICBkZWJ1Z0NvbnRleHQ6IG5vcm1hbGl6ZURlYnVnQ29udGV4dCxcbiAgICAgIH0pO1xuICAgICAgLy8gVXBkYXRlIGN1cnJlbnRFbnRyeS5sb2NhdGlvbiB0byByZWZsZWN0IG5ldyBzZWFyY2ggZGlyZWN0bHkgKGhpc3Rvcnkuc2V0IHRyaWdnZXJzIGFzeW5jIHN1YnNjcmliZXIpXG4gICAgICBjdXJyZW50RW50cnkgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRFbnRyeSxcbiAgICAgICAgbG9jYXRpb246IHsgLi4uY3VycmVudEVudHJ5LmxvY2F0aW9uLCBzZWFyY2g6IG5vcm1hbGl6ZWRTZWFyY2ggfSxcbiAgICAgICAgcmF3U2VhcmNoOiBub3JtYWxpemVkU2VhcmNoLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBub3RpZnlFbnRyeShjdXJyZW50RW50cnkpO1xuICBlbWl0RXZlbnQoe1xuICAgIGtpbmQ6ICdzbmFwc2hvdCcsXG4gICAgc291cmNlOiBsYXN0TmF2aWdhdGlvbk9yaWdpbixcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgbG9jYXRpb246IG5vcm1hbGl6ZUxvY2F0aW9uKGN1cnJlbnRFbnRyeS5sb2NhdGlvbiksXG4gICAgcm91dGVQYXRoOiByZWFkTWF0Y2hlZFJvdXRlUGF0aChjdXJyZW50RW50cnkpLFxuICB9KTtcblxuICAvLyBNYWludGFpbiBhIHNldCBvZiBzdWJzY3JpYmVycyB0byB0aGUgYWN0aXZlIHJvdXRlIGVudHJ5XG4gIGxldCBuZXh0SWQgPSAwO1xuICBjb25zdCBzdWJzY3JpYmVycyA9IG5ldyBNYXA8XG4gICAgbnVtYmVyLFxuICAgIFN1YnNjcmliZUNhbGxiYWNrPFBhcmFtRGF0YSwgUm91dGVyUXVlcnlTY2hlbWEsIFRDb250ZXh0PlxuICA+KCk7XG5cbiAgLy8gTGlzdGVuIGZvciBsb2NhdGlvbiBjaGFuZ2VzLCBtYXRjaCB0byB0aGUgcm91dGUgZW50cnksIHByZXBhcmUgdGhlIGVudHJ5LFxuICAvLyBhbmQgbm90aWZ5IHN1YnNjcmliZXJzLiBUaGlzIHBhdHRlcm4gZW5zdXJlcyB0aGF0IGRhdGEtbG9hZGluZ1xuICAvLyBvY2N1cnMgKm91dHNpZGUqIG9mIC0gYW5kICpiZWZvcmUqIC0gcmVuZGVyaW5nLlxuICBjb25zdCBkaXNwb3NlSGlzdG9yeSA9IGhpc3Rvcnkuc3Vic2NyaWJlKFxuICAgIChsb2NhdGlvbiwgZm9yY2VSZXJlbmRlciwgZGVidWdDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW4gPSByZXNvbHZlTmF2aWdhdGlvbk9yaWdpbihkZWJ1Z0NvbnRleHQpO1xuICAgICAgbGFzdE5hdmlnYXRpb25PcmlnaW4gPSBvcmlnaW47XG4gICAgICBjb25zdCBsb2NhdGlvblBheWxvYWQgPSBub3JtYWxpemVMb2NhdGlvbihsb2NhdGlvbik7XG5cbiAgICAgIGNvbnN0IGRlYnVnQ29udGV4dE9yaWdpbiA9IGRlYnVnQ29udGV4dD8ub3JpZ2luO1xuICAgICAgaWYgKGRlYnVnQ29udGV4dE9yaWdpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBoaXN0b3J5RGV0YWlsczogeyBoaXN0b3J5SW5kZXg6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHlwZW9mIGRlYnVnQ29udGV4dD8uaGlzdG9yeUluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGhpc3RvcnlEZXRhaWxzID0geyBoaXN0b3J5SW5kZXg6IGRlYnVnQ29udGV4dC5oaXN0b3J5SW5kZXggfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBkZWJ1Z0NvbnRleHRPcmlnaW4gPT09ICdwb3BzdGF0ZS1iYWNrJyB8fFxuICAgICAgICAgIGRlYnVnQ29udGV4dE9yaWdpbiA9PT0gJ3BvcHN0YXRlLWZvcndhcmQnIHx8XG4gICAgICAgICAgZGVidWdDb250ZXh0T3JpZ2luID09PSAncG9wc3RhdGUtdW5rbm93bicgfHxcbiAgICAgICAgICBkZWJ1Z0NvbnRleHRPcmlnaW4gPT09ICdleHRlcm5hbCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGV0IGRpcmVjdGlvbjogJ2JhY2snIHwgJ2ZvcndhcmQnIHwgJ3Vua25vd24nID0gJ3Vua25vd24nO1xuICAgICAgICAgIGlmIChkZWJ1Z0NvbnRleHRPcmlnaW4gPT09ICdwb3BzdGF0ZS1iYWNrJykge1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gJ2JhY2snO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGVidWdDb250ZXh0T3JpZ2luID09PSAncG9wc3RhdGUtZm9yd2FyZCcpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgICAgICB9XG4gICAgICAgICAgZW1pdEV2ZW50KHtcbiAgICAgICAgICAgIGtpbmQ6ICdwb3BzdGF0ZScsXG4gICAgICAgICAgICBzb3VyY2U6IG9yaWdpbixcbiAgICAgICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblBheWxvYWQsXG4gICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICBkZXRhaWxzOiBoaXN0b3J5RGV0YWlscyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzYW1lUGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZSA9PT0gY3VycmVudEVudHJ5LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgY29uc3Qgc2FtZVNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaCA9PT0gY3VycmVudEVudHJ5LnJhd1NlYXJjaDtcblxuICAgICAgaWYgKCFmb3JjZVJlcmVuZGVyICYmIHNhbWVQYXRobmFtZSAmJiBzYW1lU2VhcmNoKSB7XG4gICAgICAgIC8vIE5vdGhpbmcgY2hhbmdlZCB0aGF0IHdlIGNhcmUgYWJvdXRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0Q29udGV4dCA9IHJlc29sdmVDb250ZXh0KCk7XG5cbiAgICAgIC8vIElmIG9ubHkgdGhlIHNlYXJjaCBjaGFuZ2VkIHdlIHN0aWxsIHdhbnQgdG8gcHJvcGFnYXRlIHRoZSBjaGFuZ2UuXG4gICAgICAvLyBLZWVwIHRoZSBleGlzdGluZyBwcmVwYXJlZE1hdGNoIHdoZW4gcGF0aG5hbWUgaXMgaWRlbnRpY2FsIHRvIGF2b2lkIHJlZHVuZGFudCB3b3JrLlxuICAgICAgbGV0IG5leHRQcmVwYXJlZE1hdGNoID0gY3VycmVudEVudHJ5LnByZXBhcmVkTWF0Y2g7XG4gICAgICBsZXQgbmV4dFJvdXRlID0gY3VycmVudEVudHJ5LnJvdXRlO1xuXG4gICAgICBpZiAoIXNhbWVQYXRobmFtZSkge1xuICAgICAgICBuZXh0Um91dGUgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywgbG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBCdWlsZCByYXcgcXVlcnkgb2JqZWN0IChiYXNpYyBhZ2dyZWdhdGlvbikgZnJvbSBsb2NhdGlvbi5zZWFyY2hcbiAgICAgIGNvbnN0IHF1ZXJ5U2NoZW1hID0gcmVhZEFjdGl2ZVF1ZXJ5U2NoZW1hKG5leHRSb3V0ZSk7XG4gICAgICBjb25zdCBwYXJzZWRTZWFyY2hTdGF0ZSA9IHBhcnNlU2VhcmNoU3RhdGUobG9jYXRpb24uc2VhcmNoLCBxdWVyeVNjaGVtYSk7XG4gICAgICBjb25zdCBub3JtYWxpemVkRmlsdGVycyA9IG5vcm1hbGl6ZVBhZ2VGaWx0ZXJzKHBhcnNlZFNlYXJjaFN0YXRlLmZpbHRlcnMpO1xuXG4gICAgICAvLyBJZiBvbmx5IHRoZSBzZWFyY2ggY2hhbmdlZCAoc2FtZSBwYXRobmFtZSkgd2Ugc3RpbGwgbmVlZCB0byByZS1ydW4gcHJlcGFyZVxuICAgICAgaWYgKCFzYW1lUGF0aG5hbWUgfHwgIXNhbWVTZWFyY2gpIHtcbiAgICAgICAgbGV0IHVwZGF0ZUluc3RydW1lbnRhdGlvbjpcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgZW1pdDogKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gdm9pZDtcbiAgICAgICAgICAgICAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICAgICAgICAgICAgICBsb2NhdGlvbjogUm91dGVyTG9jYXRpb25TbmFwc2hvdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG5leHRSb3V0ZSAhPSBudWxsKSB7XG4gICAgICAgICAgdXBkYXRlSW5zdHJ1bWVudGF0aW9uID0ge1xuICAgICAgICAgICAgZW1pdDogKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBlbWl0RXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvdXJjZTogb3JpZ2luLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uUGF5bG9hZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIG5leHRQcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKFxuICAgICAgICAgIG5leHRSb3V0ZSxcbiAgICAgICAgICBidWlsZFByZXBhcmVRdWVyeUlucHV0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5wYXJzZWRTZWFyY2hTdGF0ZSxcbiAgICAgICAgICAgICAgZmlsdGVyczogbm9ybWFsaXplZEZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBxdWVyeVNjaGVtYSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHVwZGF0ZUluc3RydW1lbnRhdGlvbixcbiAgICAgICAgICBuZXh0Q29udGV4dCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dEVudHJ5OiBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0PiA9IHtcbiAgICAgICAgZm9yY2VSZXJlbmRlcjogZm9yY2VSZXJlbmRlciB8fCAoc2FtZVBhdGhuYW1lICYmICFzYW1lU2VhcmNoKSxcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIHJvdXRlOiBuZXh0Um91dGUsXG4gICAgICAgIHByZXBhcmVkTWF0Y2g6IG5leHRQcmVwYXJlZE1hdGNoLFxuICAgICAgICBjb250ZXh0OiBuZXh0Q29udGV4dCxcbiAgICAgICAgcmF3U2VhcmNoOiBsb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgIHF1ZXJ5OiBwYXJzZWRTZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICAgICAgZmlsdGVyczogbm9ybWFsaXplZEZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgZmlsdGVyRGlhZ25vc3RpY3M6IHBhcnNlZFNlYXJjaFN0YXRlLmZpbHRlckRpYWdub3N0aWNzLFxuICAgICAgICBhY3RpdmVRdWVyeVNjaGVtYTogcXVlcnlTY2hlbWEsXG4gICAgICB9O1xuXG4gICAgICAvLyBJZiBub3JtYWxpemF0aW9uIGNoYW5nZWQgdGhlIHR5cGVkIHF1ZXJ5IHdlIHRyaWdnZXIgYSByZXBsYWNlIHdpdGggbm9ybWFsaXplZCBzZWFyY2hcbiAgICAgIGlmIChub3JtYWxpemVkRmlsdGVycy5ub3JtYWxpemVkICYmIHF1ZXJ5U2NoZW1hICE9IG51bGwpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaCA9IGJ1aWxkQ29tYmluZWRTZWFyY2goe1xuICAgICAgICAgIGZpbHRlcnM6IG5vcm1hbGl6ZWRGaWx0ZXJzLmZpbHRlcnMsXG4gICAgICAgICAgcXVlcnk6IHBhcnNlZFNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRTZWFyY2ggIT09IGxvY2F0aW9uLnNlYXJjaCkge1xuICAgICAgICAgIGxldCBuZXh0U2VhcmNoU3RyID0gbm9ybWFsaXplZFNlYXJjaDtcbiAgICAgICAgICBpZiAoIW5leHRTZWFyY2hTdHIuc3RhcnRzV2l0aCgnPycpICYmIG5leHRTZWFyY2hTdHIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbmV4dFNlYXJjaFN0ciA9IGA/JHtuZXh0U2VhcmNoU3RyfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVtaXRIaXN0b3J5RXZlbnQoXG4gICAgICAgICAgICAnbm9ybWFsaXplJyxcbiAgICAgICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgICAgIHNlYXJjaDogbmV4dFNlYXJjaFN0cixcbiAgICAgICAgICAgICAgaGFzaDogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyByZWFzb246ICdydW50aW1lLXBhZ2UtY2xhbXAnIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBydW50aW1lTm9ybWFsaXplQ29udGV4dDogSGlzdG9yeURlYnVnQ29udGV4dCA9IHtcbiAgICAgICAgICAgIG9yaWdpbjogJ25vcm1hbGl6ZScsXG4gICAgICAgICAgICB0cmlnZ2VyOiAnbm9ybWFsaXplJyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGhpc3Rvcnkuc2V0KHtcbiAgICAgICAgICAgIHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICAgIHNlYXJjaDogbmV4dFNlYXJjaFN0cixcbiAgICAgICAgICAgIGhhc2g6ICcnLFxuICAgICAgICAgICAgZGVidWdDb250ZXh0OiBydW50aW1lTm9ybWFsaXplQ29udGV4dCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47IC8vIGVhcmx5OiBzdWJzZXF1ZW50IHNldCB3aWxsIHRyaWdnZXIgcmVydW5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY3VycmVudCBlbnRyeSBhbmQgbm90aWZ5IGFsbCBzdWJzY3JpYmVyc1xuICAgICAgY3VycmVudEVudHJ5ID0gbmV4dEVudHJ5O1xuICAgICAgc3Vic2NyaWJlcnMuZm9yRWFjaCgoY2FsbGJhY2spID0+IHtcbiAgICAgICAgY2FsbGJhY2sobmV4dEVudHJ5KTtcbiAgICAgIH0pO1xuICAgICAgbm90aWZ5RW50cnkobmV4dEVudHJ5KTtcbiAgICAgIGVtaXRFdmVudCh7XG4gICAgICAgIGtpbmQ6ICdzbmFwc2hvdCcsXG4gICAgICAgIHNvdXJjZTogb3JpZ2luLFxuICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblBheWxvYWQsXG4gICAgICAgIHJvdXRlUGF0aDogcmVhZE1hdGNoZWRSb3V0ZVBhdGgobmV4dEVudHJ5KSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICk7XG5cbiAgLyoqIE5vcm1hbGl6ZXMgdXNlci1wcm92aWRlZCBwcmVsb2FkIHRhcmdldHMgaW50byBjb25zaXN0ZW50IHN0cnVjdHVyZXMuICovXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZVByZWxvYWRUYXJnZXQodGFyZ2V0OiBQcmVsb2FkVGFyZ2V0KToge1xuICAgIHBhdGhuYW1lOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICB9IHtcbiAgICBsZXQgbm9ybWFsaXplZFBhdGhuYW1lID0gaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICBpZiAodHlwZW9mIHRhcmdldC5wYXRobmFtZSA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0LnBhdGhuYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIG5vcm1hbGl6ZWRQYXRobmFtZSA9IHRhcmdldC5wYXRobmFtZTtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZFNlYXJjaCA9ICcnO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0LnNlYXJjaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5vcm1hbGl6ZWRTZWFyY2ggPSB0YXJnZXQuc2VhcmNoO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkU291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlID0gJ3Byb2dyYW1tYXRpYyc7XG4gICAgY29uc3QgbWFwcGVkU291cmNlID0gbWFwT3JpZ2luKHRhcmdldC5zb3VyY2UpO1xuICAgIGlmIChtYXBwZWRTb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbm9ybWFsaXplZFNvdXJjZSA9IG1hcHBlZFNvdXJjZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGhuYW1lOiBub3JtYWxpemVkUGF0aG5hbWUsXG4gICAgICBzZWFyY2g6IG5vcm1hbGl6ZWRTZWFyY2gsXG4gICAgICBzb3VyY2U6IG5vcm1hbGl6ZWRTb3VyY2UsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwcmVwYXJlZCB2YWx1ZSBmb3IgdGhlIGZpcnN0IGFjdGl2ZSBzZWdtZW50IG1hdGNoaW5nIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJvdXRlIHNlZ21lbnQgcGF0aCBvciBmdWxsIHBhdGggdG8gaW5zcGVjdC5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFByZXBhcmVkKHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRyeSA9IGN1cnJlbnRFbnRyeTtcbiAgICAgIGZvciAoY29uc3QgcHJlcGFyZWRSb3V0ZSBvZiBlbnRyeS5wcmVwYXJlZE1hdGNoLnNlZ21lbnRzKSB7XG4gICAgICAgIGlmIChwcmVwYXJlZFJvdXRlLnBhdGggPT09IHBhdGggfHwgcHJlcGFyZWRSb3V0ZS5mdWxsUGF0aCA9PT0gcGF0aCkge1xuICAgICAgICAgIHJldHVybiBwcmVwYXJlZFJvdXRlLnByZXBhcmVkUmVzb3VyY2U/LmdldCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBldmVyeSBhY3RpdmUgcHJlcGFyZWQgc2VnbWVudCBtYXRjaGluZyB0aGUgcHJvdmlkZWQgcGF0aC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSb3V0ZSBzZWdtZW50IHBhdGggb3IgZnVsbCBwYXRoIHRvIGluc3BlY3QuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRQcmVwYXJlZFNlZ21lbnRzKHBhdGg6IHN0cmluZyk6IFByZXBhcmVkUm91dGVTZWdtZW50U25hcHNob3RbXSB7XG4gICAgcmV0dXJuIGN1cnJlbnRFbnRyeS5wcmVwYXJlZE1hdGNoLnNlZ21lbnRzXG4gICAgICAuZmlsdGVyKChwcmVwYXJlZFJvdXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBwcmVwYXJlZFJvdXRlLnBhdGggPT09IHBhdGggfHwgcHJlcGFyZWRSb3V0ZS5mdWxsUGF0aCA9PT0gcGF0aDtcbiAgICAgIH0pXG4gICAgICAubWFwKChwcmVwYXJlZFJvdXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGF0aDogcHJlcGFyZWRSb3V0ZS5wYXRoLFxuICAgICAgICAgIGZ1bGxQYXRoOiBwcmVwYXJlZFJvdXRlLmZ1bGxQYXRoLFxuICAgICAgICAgIHNlZ21lbnRJbmRleDogcHJlcGFyZWRSb3V0ZS5zZWdtZW50SW5kZXgsXG4gICAgICAgICAgcHJlcGFyZWRSZXNvdXJjZTogcHJlcGFyZWRSb3V0ZS5wcmVwYXJlZFJlc291cmNlLFxuICAgICAgICAgIHJlZGlyZWN0VG86IHByZXBhcmVkUm91dGUucmVkaXJlY3RUbyxcbiAgICAgICAgICByZXNvdXJjZVBhZ2U6IHByZXBhcmVkUm91dGUucmVzb3VyY2VQYWdlLFxuICAgICAgICAgIGhpZ2hsaWdodElkOiBwcmVwYXJlZFJvdXRlLmhpZ2hsaWdodElkLFxuICAgICAgICAgIHF1ZXJ5U2NoZW1hOiBwcmVwYXJlZFJvdXRlLnF1ZXJ5U2NoZW1hLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBUaGUgcm91dGVyIGNvbnRleHQgb2JqZWN0IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gUmVhY3QgQ29udGV4dFxuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGhpc3RvcnksXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRFbnRyeTtcbiAgICB9LFxuICAgIHByZWxvYWRDb2RlKHRhcmdldCkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVByZWxvYWRUYXJnZXQodGFyZ2V0KTtcbiAgICAgIGVtaXRQcmVsb2FkRXZlbnQoJ2NvZGUnLCBub3JtYWxpemVkLnBhdGhuYW1lLCBub3JtYWxpemVkLnNvdXJjZSk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIHtcbiAgICAgICAgLi4uaGlzdG9yeS5sb2NhdGlvbixcbiAgICAgICAgcGF0aG5hbWU6IG5vcm1hbGl6ZWQucGF0aG5hbWUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG1hdGNoZXMucm91dGUucm91dGVzLmZvckVhY2goKHsgcmVzb3VyY2VQYWdlIH0pID0+IHtcbiAgICAgICAgaWYgKHJlc291cmNlUGFnZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgcmVzb3VyY2VQYWdlLmxvYWQoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcHJlbG9hZCh0YXJnZXQpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQcmVsb2FkVGFyZ2V0KHRhcmdldCk7XG4gICAgICBlbWl0UHJlbG9hZEV2ZW50KCdmdWxsJywgbm9ybWFsaXplZC5wYXRobmFtZSwgbm9ybWFsaXplZC5zb3VyY2UpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCB7XG4gICAgICAgIC4uLmhpc3RvcnkubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lOiBub3JtYWxpemVkLnBhdGhuYW1lLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBsb2NhdGlvblNuYXBzaG90OiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90ID0ge1xuICAgICAgICBwYXRobmFtZTogbm9ybWFsaXplZC5wYXRobmFtZSxcbiAgICAgICAgc2VhcmNoOiBub3JtYWxpemVkLnNlYXJjaCxcbiAgICAgICAgaGFzaDogJycsXG4gICAgICB9O1xuICAgICAgbGV0IGluc3RydW1lbnRhdGlvbjpcbiAgICAgICAgfCB7XG4gICAgICAgICAgICBlbWl0OiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB2b2lkO1xuICAgICAgICAgICAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICAgICAgICAgICAgbG9jYXRpb246IFJvdXRlckxvY2F0aW9uU25hcHNob3Q7XG4gICAgICAgICAgfVxuICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChtYXRjaGVzICE9IG51bGwpIHtcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uID0ge1xuICAgICAgICAgIGVtaXQ6IChldmVudDogUm91dGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGVtaXRFdmVudChldmVudCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzb3VyY2U6IG5vcm1hbGl6ZWQuc291cmNlLFxuICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblNuYXBzaG90LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcHJlbG9hZENvbnRleHQgPSByZXNvbHZlQ29udGV4dCgpO1xuICAgICAgY29uc3QgcHJlbG9hZFF1ZXJ5U2NoZW1hID0gcmVhZEFjdGl2ZVF1ZXJ5U2NoZW1hKG1hdGNoZXMpO1xuICAgICAgY29uc3QgcHJlbG9hZFNlYXJjaFN0YXRlID0gcGFyc2VTZWFyY2hTdGF0ZShcbiAgICAgICAgbm9ybWFsaXplZC5zZWFyY2gsXG4gICAgICAgIHByZWxvYWRRdWVyeVNjaGVtYSxcbiAgICAgICk7XG4gICAgICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBidWlsZFByZXBhcmVRdWVyeUlucHV0KHByZWxvYWRTZWFyY2hTdGF0ZSwgcHJlbG9hZFF1ZXJ5U2NoZW1hKSxcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uLFxuICAgICAgICBwcmVsb2FkQ29udGV4dCxcbiAgICAgICk7XG4gICAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLmZvckVhY2goKHJvdXRlKSA9PiB7XG4gICAgICAgIGlmIChyb3V0ZS5wcmVwYXJlZFJlc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgICAgcm91dGUucHJlcGFyZWRSZXNvdXJjZS5sb2FkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc3Vic2NyaWJlKGNhbGxiYWNrKSB7XG4gICAgICBuZXh0SWQgKz0gMTtcbiAgICAgIGNvbnN0IGlkID0gbmV4dElkO1xuICAgICAgLyoqIFJlbW92ZXMgdGhlIHN1YnNjcmliZXIgcHJldmlvdXNseSByZWdpc3RlcmVkIHZpYSBzdWJzY3JpYmUuICovXG4gICAgICBmdW5jdGlvbiBkaXNwb3NlQ2FsbGJhY2soKSB7XG4gICAgICAgIHN1YnNjcmliZXJzLmRlbGV0ZShpZCk7XG4gICAgICB9XG4gICAgICBzdWJzY3JpYmVycy5zZXQoaWQsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiBkaXNwb3NlQ2FsbGJhY2s7XG4gICAgfSxcbiAgICBuYXZpZ2F0ZSh7XG4gICAgICBwYXRobmFtZSxcbiAgICAgIHF1ZXJ5LFxuICAgICAgZmlsdGVyczogbmF2RmlsdGVycyxcbiAgICAgIHJlcGxhY2UsXG4gICAgfToge1xuICAgICAgcGF0aG5hbWU/OiBzdHJpbmc7XG4gICAgICBxdWVyeT86IFVua25vd25RdWVyeVNoYXBlO1xuICAgICAgZmlsdGVycz86IFVua25vd25GaWx0ZXJzO1xuICAgICAgcmVwbGFjZT86IGJvb2xlYW47XG4gICAgfSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGN1cnJlbnRFbnRyeTtcbiAgICAgIGxldCB0YXJnZXRQYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgdGFyZ2V0UGF0aG5hbWUgPz89IGN1cnJlbnQubG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uUm91dGUgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywge1xuICAgICAgICAuLi5oaXN0b3J5LmxvY2F0aW9uLFxuICAgICAgICBwYXRobmFtZTogdGFyZ2V0UGF0aG5hbWUsXG4gICAgICB9KTtcbiAgICAgIGxldCBkZXN0U2NoZW1hID0gcmVhZEFjdGl2ZVF1ZXJ5U2NoZW1hKGRlc3RpbmF0aW9uUm91dGUpO1xuICAgICAgZGVzdFNjaGVtYSA9IGRlc3RTY2hlbWEgPz8gY3VycmVudC5hY3RpdmVRdWVyeVNjaGVtYTtcblxuICAgICAgY29uc3QgaGFzU2NoZW1hID0gZGVzdFNjaGVtYSAhPSBudWxsO1xuICAgICAgY29uc3QgdXNlUXVlcnlBc0ZpbHRlcnMgPVxuICAgICAgICBuYXZGaWx0ZXJzID09IG51bGwgJiZcbiAgICAgICAgaGFzU2NoZW1hICYmXG4gICAgICAgIHF1ZXJ5ICE9IG51bGwgJiZcbiAgICAgICAgbG9va3NMaWtlRmlsdGVycyhxdWVyeSk7XG4gICAgICBsZXQgZmlsdGVyc0lucHV0ID0gbmF2RmlsdGVycztcbiAgICAgIGlmIChmaWx0ZXJzSW5wdXQgPT0gbnVsbCkge1xuICAgICAgICBpZiAodXNlUXVlcnlBc0ZpbHRlcnMpIHtcbiAgICAgICAgICBmaWx0ZXJzSW5wdXQgPSBxdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXJzSW5wdXQgPSBjdXJyZW50LmZpbHRlcnM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCByYXdRdWVyeUlucHV0OiBVbmtub3duUXVlcnlTaGFwZSB8IFJhd1F1ZXJ5IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHVzZVF1ZXJ5QXNGaWx0ZXJzKSB7XG4gICAgICAgIHJhd1F1ZXJ5SW5wdXQgPSBjdXJyZW50LnF1ZXJ5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmF3UXVlcnlJbnB1dCA9IHF1ZXJ5ID8/IGN1cnJlbnQucXVlcnk7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2ggPSBidWlsZENvbWJpbmVkU2VhcmNoKHtcbiAgICAgICAgZmlsdGVyczogZmlsdGVyc0lucHV0LFxuICAgICAgICBxdWVyeTogcmF3UXVlcnlJbnB1dCxcbiAgICAgICAgcXVlcnlTY2hlbWE6IGRlc3RTY2hlbWEsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxvY2F0aW9uT2JqID0geyBwYXRobmFtZTogdGFyZ2V0UGF0aG5hbWUsIHNlYXJjaCwgaGFzaDogJycgfTtcbiAgICAgIGNvbnN0IG9yaWdpbjogUm91dGVyTmF2aWdhdGlvblNvdXJjZSA9ICdwcm9ncmFtbWF0aWMnO1xuICAgICAgY29uc3QgZGVidWdDb250ZXh0OiBIaXN0b3J5RGVidWdDb250ZXh0ID0ge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIHRyaWdnZXI6ICdwcm9ncmFtbWF0aWMnLFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlcGxhY2UgPT09IHRydWUpIHtcbiAgICAgICAgZW1pdEhpc3RvcnlFdmVudCgncmVwbGFjZScsIG9yaWdpbiwgbG9jYXRpb25PYmosIHtcbiAgICAgICAgICB0cmlnZ2VyOiAncHJvZ3JhbW1hdGljJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGhpc3Rvcnkuc2V0KHtcbiAgICAgICAgICAuLi5sb2NhdGlvbk9iaixcbiAgICAgICAgICBkZWJ1Z0NvbnRleHQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW1pdEhpc3RvcnlFdmVudCgncHVzaCcsIG9yaWdpbiwgbG9jYXRpb25PYmosIHtcbiAgICAgICAgICB0cmlnZ2VyOiAncHJvZ3JhbW1hdGljJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGhpc3RvcnkucHVzaCh7XG4gICAgICAgICAgLi4ubG9jYXRpb25PYmosXG4gICAgICAgICAgZGVidWdDb250ZXh0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFByZXBhcmVkLFxuICAgIGdldFByZXBhcmVkU2VnbWVudHMsXG4gIH0gYXMgQ3JlYXRlUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSPlsnY29udGV4dCddO1xuXG4gIC8qKiBSZWxlYXNlcyByb3V0ZXIgcmVzb3VyY2VzIGFuZCBkZXRhY2hlcyBhbGwgaW5zdHJ1bWVudGF0aW9ucy4gKi9cbiAgZnVuY3Rpb24gY2xlYW51cCgpOiB2b2lkIHtcbiAgICBkaXNwb3NlSGlzdG9yeSgpO1xuICAgIHN1YnNjcmliZXJzLmNsZWFyKCk7XG4gICAgcmVnaXN0cnkuZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gUmV0dXJuIGJvdGggdGhlIGNvbnRleHQgb2JqZWN0IGFuZCBhIGNsZWFudXAgZnVuY3Rpb25cbiAgcmV0dXJuIHsgY29udGV4dCwgY2xlYW51cCB9O1xufVxuIl19
612
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsS0FBSyxJQUFJLFlBQVksR0FHdEIsTUFBTSx1QkFBdUIsQ0FBQztBQWUvQixPQUFPLEVBQ0wsNkJBQTZCLEdBTTlCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsT0FBTyxFQUNMLHdCQUF3QixHQUd6QixNQUFNLGNBQWMsQ0FBQztBQXVGdEIsTUFBTSxDQUFDLE9BQU8sVUFBVSxZQUFZLENBSWxDLE1BQTJCLEVBQzNCLFVBQXlDLEVBQUU7SUFHM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUVyQyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FDNUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FDL0IsQ0FBQztJQUVGLElBQUksYUFBbUMsQ0FBQztJQUN4QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUMsYUFBYSxHQUFJLE9BQU8sQ0FBQyxPQUEwQixFQUFFLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxDQUFDO0lB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LENBQUMsR0FBRyxDQUFDO29CQUNWLEdBQUcsV0FBVztvQkFDZCxZQUFZO2lCQUNiLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtvQkFDNUMsT0FBTyxFQUFFLGNBQWM7aUJBQ3hCLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNYLEdBQUcsV0FBVztvQkFDZCxZQUFZO2lCQUNiLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBQ0QsV0FBVztRQUNYLG1CQUFtQjtLQUMwQixDQUFDO0lBR2hELFNBQVMsT0FBTztRQUNkLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFDRCxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGNBQWMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFJvdXRlcyB9IGZyb20gJy4uL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgQnJvd3Nlckhpc3RvcnkgfSBmcm9tICcuLi9oaXN0b3J5L2luZGV4LmpzJztcbmltcG9ydCB7IGdldE1hdGNoZWRSb3V0ZSwgcHJlcGFyZU1hdGNoIH0gZnJvbSAnLi4vdG9vbHMuanMnO1xuaW1wb3J0IHsgcGFyc2VSYXdRdWVyeSB9IGZyb20gJy4uL3Rvb2xzL3F1ZXJ5LmpzJztcbmltcG9ydCBidWlsZENvbWJpbmVkU2VhcmNoIGZyb20gJy4uL3Rvb2xzL2J1aWxkQ29tYmluZWRTZWFyY2guanMnO1xuaW1wb3J0IHtcbiAgRklMVEVSX09QRVJBVE9SUyxcbiAgcGFyc2UgYXMgcGFyc2VGaWx0ZXJzLFxuICB0eXBlIERpYWdub3N0aWMgYXMgRmlsdGVyRGlhZ25vc3RpYyxcbiAgdHlwZSBTY2hlbWEgYXMgRmlsdGVyU2NoZW1hLFxufSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnknO1xuaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5pbXBvcnQge1xuICB0eXBlIFJvdXRlRW50cnksXG4gIHR5cGUgUm91dGluZ0NvbnRleHRUeXBlLFxuICB0eXBlIFN1YnNjcmliZUNhbGxiYWNrLFxuICB0eXBlIEFueVJvdXRlLFxuICB0eXBlIFByZXBhcmVkQWNjZXNzLFxuICB0eXBlIE5hdmlnYXRlT3ZlcmxvYWRzLFxuICB0eXBlIFByZWxvYWRUYXJnZXQsXG4gIHR5cGUgUHJlcGFyZWRSb3V0ZVNlZ21lbnRTbmFwc2hvdCxcbiAgdHlwZSBSYXdRdWVyeSxcbiAgdHlwZSBVbmtub3duRmlsdGVycyxcbiAgdHlwZSBVbmtub3duUXVlcnlTaGFwZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlSW5zdHJ1bWVudGF0aW9uUmVnaXN0cnksXG4gIHR5cGUgSW5zdHJ1bWVudGF0aW9uQVBJLFxuICB0eXBlIFJvdXRlckVudHJ5U25hcHNob3QsXG4gIHR5cGUgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbiAgdHlwZSBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlLFxuICB0eXBlIFJvdXRlckV2ZW50LFxufSBmcm9tICcuLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgSGlzdG9yeURlYnVnQ29udGV4dCB9IGZyb20gJy4uL2hpc3RvcnkvdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgaXNSb3V0ZXJOYXZpZ2F0aW9uU291cmNlLFxuICB0eXBlIFJvdXRlckhpc3RvcnlBY3Rpb25WYWx1ZSxcbiAgdHlwZSBSb3V0ZXJQcmVsb2FkTW9kZVZhbHVlLFxufSBmcm9tICcuLi92YWx1ZXMuanMnO1xuXG50eXBlIFJvdXRlclF1ZXJ5U2NoZW1hID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkO1xudHlwZSBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0PiA9IFJvdXRlRW50cnk8XG4gIFBhcmFtRGF0YSxcbiAgUm91dGVyUXVlcnlTY2hlbWEsXG4gIFRDb250ZXh0XG4+O1xudHlwZSBQYXJzZWRTZWFyY2hTdGF0ZSA9IHtcbiAgcXVlcnk6IFJhd1F1ZXJ5O1xuICBmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnM7XG4gIGZpbHRlckRpYWdub3N0aWNzPzogRmlsdGVyRGlhZ25vc3RpY1tdO1xufTtcbnR5cGUgUHJlcGFyZVF1ZXJ5SW5wdXQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBmb3IgdGhlIGNyZWF0ZVJvdXRlciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSIGV4dGVuZHMgQW55Um91dGVbXT4gPSB7XG4gIC8qKiBGdW5jdGlvbiB0byBjbGVhbiB1cCByb3V0ZXIgbGlzdGVuZXJzIGFuZCByZXNvdXJjZXMgKi9cbiAgY2xlYW51cDogKCkgPT4gdm9pZDtcbiAgLyoqIFJvdXRlciBjb250ZXh0IG9iamVjdCBmb3IgdGhlIFJlYWN0IENvbnRleHQgUHJvdmlkZXIgKi9cbiAgY29udGV4dDogUm91dGluZ0NvbnRleHRUeXBlPFxuICAgIFBhcmFtRGF0YSxcbiAgICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgICBVbmtub3duUXVlcnlTaGFwZSxcbiAgICBUQ29udGV4dFxuICA+ICZcbiAgICBQcmVwYXJlZEFjY2VzczxSPiAmIHtcbiAgICAgIG5hdmlnYXRlOiBOYXZpZ2F0ZU92ZXJsb2FkczxSPjtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGxldGUgcm91dGVyIHN5c3RlbSBmcm9tIHJvdXRlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFRoaXMgcm91dGVyIGlzIGJ1aWx0IGZyb20gdGhlIHNhbWUgcHJpbWl0aXZlcyBhcyByZWFjdC1yb3V0ZXIgYnV0IHdpdGggYWRkaXRpb25hbFxuICogZmVhdHVyZXMgZm9yIGRhdGEgcHJlbG9hZGluZyBhbmQgY29kZSBzcGxpdHRpbmcuIEVhY2ggcm91dGUgY2FuIGNvbnRhaW4gYm90aCBhXG4gKiBDb21wb25lbnQgYW5kIGEgcHJlcGFyZSgpIGZ1bmN0aW9uIHRoYXQgY2FuIHByZWxvYWQgZGF0YSBmb3IgdGhlIGNvbXBvbmVudC5cbiAqXG4gKiBUaGUgcm91dGVyIHdhdGNoZXMgZm9yIGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgbG9jYXRpb24gdmlhIHRoZSBIVE1MNSBIaXN0b3J5IEFQSSxcbiAqIG1hcHMgdGhlIGxvY2F0aW9uIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJvdXRlIGVudHJ5LCBhbmQgdGhlbiBwcmVsb2FkcyB0aGUgY29kZVxuICogYW5kIGRhdGEgZm9yIHRoZSByb3V0ZSBiZWZvcmUgcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSByb3V0ZXMgLSBBcnJheSBvZiByb3V0ZSBjb25maWd1cmF0aW9uc1xuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJvdXRlciBjb250ZXh0IGFuZCBjbGVhbnVwIGZ1bmN0aW9uXG4gKlxuICBwcmVwYXJlZE1hdGNoOiBwcmVwYXJlTWF0Y2gocm91dGUsIHBhcnNlUmF3UXVlcnkoaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gpKSxcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICcvdXNlcnMvOmlkJyxcbiAqICAgICByZXNvdXJjZVBhZ2U6IGdldFJlc291cmNlUGFnZSgnVXNlclByb2ZpbGUnLCAoKSA9PiBpbXBvcnQoJy4vVXNlclByb2ZpbGUnKSksXG4gKiAgICAgcHJlcGFyZTogKHsgdmFyaWFibGVzIH0pID0+ICh7IHVzZXJJZDogdmFyaWFibGVzLmlkIH0pXG4gKiAgIH1cbiAqIF07XG4gKlxuICogY29uc3QgeyBjb250ZXh0LCBjbGVhbnVwIH0gPSBjcmVhdGVSb3V0ZXIocm91dGVzKTtcbiAqXG4gKiAvLyBVc2UgaW4gUmVhY3QgYXBwXG4gKiA8Um91dGluZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICogICA8Um91dGVyUmVuZGVyZXIgLz5cbiAqIDwvUm91dGluZ0NvbnRleHQuUHJvdmlkZXI+XG4gKiBgYGBcbiAqL1xuLyoqXG4gKiBDcmVhdGUgYSByb3V0ZXIgKHR5cGVkIG92ZXJsb2FkKS4gV2hlbiBjYWxsZWQgd2l0aCBhIGNvbnN0IHR1cGxlIG9mIHJvdXRlcywgZ2VuZXJpY3MgYXJlIHByZXNlcnZlZC5cbiAqL1xuLyoqXG4gKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBgY3JlYXRlUm91dGVyYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlUm91dGVyT3B0aW9uczxUQ29udGV4dD4gPSB7XG4gIC8qKiBJbnN0cnVtZW50YXRpb25zIHRvIGF0dGFjaCB0byB0aGUgcm91dGVyIChEZXZUb29scyBicmlkZ2UsIGxvZ2dlciwgLi4uKS4gKi9cbiAgaW5zdHJ1bWVudGF0aW9ucz86IEluc3RydW1lbnRhdGlvbkFQSVtdO1xuICAvKiogU3RhdGljIGNvbnRleHQgdmFsdWUgb3IgbGF6eSBpbml0aWFsaXplciBmb3IgdGhlIHJvdXRlci4gKi9cbiAgY29udGV4dD86IFRDb250ZXh0IHwgKCgpID0+IFRDb250ZXh0KTtcbiAgLyoqIFJlc29sdmUgYSBmcmVzaCBjb250ZXh0IHZhbHVlIHBlciBuYXZpZ2F0aW9uLiAqL1xuICBnZXRDb250ZXh0PzogKCkgPT4gVENvbnRleHQ7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByb3V0ZXIgaW5zdGFuY2UgZnJvbSBhIHJvdXRlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIFJvdXRlIGRlZmluaXRpb25zIHRvIHJlZ2lzdGVyLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBpbnN0cnVtZW50YXRpb24gc2V0dGluZ3MgdXNlZCBmb3IgZXhwb3NpbmcgZGV2ZWxvcG1lbnQgdG9vbGluZy5cbiAqIEBwYXJhbSBvcHRpb25zLmluc3RydW1lbnRhdGlvbnMgLSBJbnN0cnVtZW50YXRpb25zIGludm9rZWQgb24gcm91dGVyIGV2ZW50cyAoZGV2ZWxvcG1lbnQgb25seSkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBSIGV4dGVuZHMgQW55Um91dGVbXSA9IEFueVJvdXRlW10sXG4+KFxuICByb3V0ZXM6IFsuLi5SXSB8IEFueVJvdXRlW10sXG4gIG9wdGlvbnM6IENyZWF0ZVJvdXRlck9wdGlvbnM8VENvbnRleHQ+ID0ge30sXG4pOiBDcmVhdGVSb3V0ZXJSZXR1cm48VENvbnRleHQsIFI+IHtcbiAgLy8gSW5pdGlhbGl6ZSBicm93c2VyIGhpc3RvcnkgbWFuYWdlclxuICBjb25zdCBoaXN0b3J5ID0gbmV3IEJyb3dzZXJIaXN0b3J5KCk7XG5cbiAgY29uc3QgcmVnaXN0cnkgPSBjcmVhdGVJbnN0cnVtZW50YXRpb25SZWdpc3RyeShcbiAgICBvcHRpb25zLmluc3RydW1lbnRhdGlvbnMgPz8gW10sXG4gICk7XG5cbiAgbGV0IHN0YXRpY0NvbnRleHQ6IFRDb250ZXh0IHwgdW5kZWZpbmVkO1xuICBpZiAob3B0aW9ucy5nZXRDb250ZXh0ID09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29udGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgc3RhdGljQ29udGV4dCA9IChvcHRpb25zLmNvbnRleHQgYXMgKCkgPT4gVENvbnRleHQpKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRpY0NvbnRleHQgPSBvcHRpb25zLmNvbnRleHQ7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlc29sdmUgdGhlIGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uICovXG4gIGZ1bmN0aW9uIHJlc29sdmVDb250ZXh0KCk6IFRDb250ZXh0IHtcbiAgICBpZiAob3B0aW9ucy5nZXRDb250ZXh0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmdldENvbnRleHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRpY0NvbnRleHQgYXMgVENvbnRleHQ7XG4gIH1cblxuICBsZXQgcGVuZGluZ05hdmlnYXRpb25PcmlnaW46IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UgfCB1bmRlZmluZWQ7XG4gIGxldCBsYXN0TmF2aWdhdGlvbk9yaWdpbjogUm91dGVyTmF2aWdhdGlvblNvdXJjZSA9ICdleHRlcm5hbCc7XG4gIGxldCBsYXN0UHJlbG9hZFNpZ25hdHVyZToge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICB9IHwgbnVsbCA9IG51bGw7XG4gIGxldCByb3V0ZXJEaXNwb3NlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHBhcnRpYWwgbG9jYXRpb24gb2JqZWN0IGludG8gYSBmdWxsIGxvY2F0aW9uIHN0cnVjdHVyZSB3aXRoIHN0cmluZyBmaWVsZHMuXG4gICAqL1xuICBmdW5jdGlvbiBub3JtYWxpemVMb2NhdGlvbihsb2NhdGlvbjoge1xuICAgIHBhdGhuYW1lOiBzdHJpbmc7XG4gICAgc2VhcmNoPzogc3RyaW5nO1xuICAgIGhhc2g/OiBzdHJpbmc7XG4gIH0pOiB7IHBhdGhuYW1lOiBzdHJpbmc7IHNlYXJjaDogc3RyaW5nOyBoYXNoOiBzdHJpbmcgfSB7XG4gICAgbGV0IHBhdGhuYW1lVmFsdWUgPSAnJztcbiAgICBpZiAodHlwZW9mIGxvY2F0aW9uLnBhdGhuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcGF0aG5hbWVWYWx1ZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIH1cbiAgICBsZXQgc2VhcmNoVmFsdWUgPSAnJztcbiAgICBpZiAodHlwZW9mIGxvY2F0aW9uLnNlYXJjaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNlYXJjaFZhbHVlID0gbG9jYXRpb24uc2VhcmNoO1xuICAgIH1cbiAgICBsZXQgaGFzaFZhbHVlID0gJyc7XG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbi5oYXNoID09PSAnc3RyaW5nJykge1xuICAgICAgaGFzaFZhbHVlID0gbG9jYXRpb24uaGFzaDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGhuYW1lOiBwYXRobmFtZVZhbHVlLFxuICAgICAgc2VhcmNoOiBzZWFyY2hWYWx1ZSxcbiAgICAgIGhhc2g6IGhhc2hWYWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgcm91dGVyIGV2ZW50IHRvIGV2ZXJ5IHJlZ2lzdGVyZWQgaW5zdHJ1bWVudGF0aW9uLiAqL1xuICBmdW5jdGlvbiBlbWl0RXZlbnQoZXZlbnQ6IFJvdXRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHJvdXRlckRpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJlZ2lzdHJ5LmVtaXRFdmVudChldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gY29lcmNlIGFuIGFyYml0cmFyeSBzdHJpbmcgaW50byBhIGtub3duIG5hdmlnYXRpb24gc291cmNlLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwT3JpZ2luKHJhdz86IHN0cmluZyk6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UgfCB1bmRlZmluZWQge1xuICAgIGlmIChpc1JvdXRlck5hdmlnYXRpb25Tb3VyY2UocmF3KSkge1xuICAgICAgcmV0dXJuIHJhdztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlck9wZXJhdG9ycyA9IG5ldyBTZXQ8c3RyaW5nPihGSUxURVJfT1BFUkFUT1JTKTtcblxuICAvKiogSGV1cmlzdGljOiBkZXRlY3QgZmlsdGVyLWxpa2Ugb2JqZWN0cyB3aGVuIGNhbGxlcnMgcGFzcyBmaWx0ZXIgcmVjb3JkcyB0byBuYXZpZ2F0ZS4gKi9cbiAgZnVuY3Rpb24gbG9va3NMaWtlRmlsdGVycyh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcmVjb3JkID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZm9yIChjb25zdCBmaWVsZFZhbHVlIG9mIE9iamVjdC52YWx1ZXMocmVjb3JkKSkge1xuICAgICAgaWYgKFxuICAgICAgICBmaWVsZFZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpXG4gICAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0b3JzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIG1vc3QgYXBwcm9wcmlhdGUgb3JpZ2luIGZvciB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIGV2ZW50LlxuICAgKi9cbiAgLyoqIFJlc29sdmVzIHRoZSBuYXZpZ2F0aW9uIHNvdXJjZSBjb21iaW5pbmcgaGlzdG9yeSBjb250ZXh0IGFuZCBwZW5kaW5nIGludGVudC4gKi9cbiAgZnVuY3Rpb24gcmVzb2x2ZU5hdmlnYXRpb25PcmlnaW4oXG4gICAgY29udGV4dD86IEhpc3RvcnlEZWJ1Z0NvbnRleHQgfCBudWxsLFxuICApOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlIHtcbiAgICBjb25zdCBmYWxsYmFja09yaWdpbiA9IHBlbmRpbmdOYXZpZ2F0aW9uT3JpZ2luO1xuICAgIGxldCBvcmlnaW46IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb250ZXh0T3JpZ2luID0gY29udGV4dD8ub3JpZ2luO1xuICAgIGlmIChjb250ZXh0T3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9yaWdpbiA9IG1hcE9yaWdpbihjb250ZXh0T3JpZ2luKTtcbiAgICB9XG5cbiAgICBvcmlnaW4gPz89IGZhbGxiYWNrT3JpZ2luO1xuICAgIG9yaWdpbiA/Pz0gJ2V4dGVybmFsJztcbiAgICBwZW5kaW5nTmF2aWdhdGlvbk9yaWdpbiA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gb3JpZ2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBpbm5lci1tb3N0IG1hdGNoZWQgcm91dGUgcGF0aCBmcm9tIGEgcm91dGUgZW50cnkgd2hlbiBhdmFpbGFibGUuXG4gICAqL1xuICAvKiogUmV0dXJucyB0aGUgZGVlcGVzdCBtYXRjaGVkIHJvdXRlIHBhdGggZnJvbSBhIHJvdXRlIGVudHJ5IGlmIGF2YWlsYWJsZS4gKi9cbiAgZnVuY3Rpb24gcmVhZE1hdGNoZWRSb3V0ZVBhdGgoXG4gICAgZW50cnk6IFJvdXRlckVudHJ5U3RhdGU8VENvbnRleHQ+IHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChlbnRyeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaGVkUm91dGUgPSBlbnRyeS5yb3V0ZTtcbiAgICBpZiAobWF0Y2hlZFJvdXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZFJvdXRlcyA9IG1hdGNoZWRSb3V0ZS5yb3V0ZS5yb3V0ZXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRSb3V0ZXMpKSB7XG4gICAgICBjb25zdCBsYXN0Q2hpbGQgPSBjaGlsZFJvdXRlcy5hdCgtMSk7XG4gICAgICBpZiAobGFzdENoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbGFzdENoaWxkUmVjb3JkID0gbGFzdENoaWxkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBsYXN0Q2hpbGRSZWNvcmQucGF0aDtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGlsZFBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb290UGF0aCA9IG1hdGNoZWRSb3V0ZS5yb3V0ZS5wYXRoO1xuICAgIGlmICh0eXBlb2Ygcm9vdFBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gcm9vdFBhdGg7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgZGVlcGVzdCBhY3RpdmUgcXVlcnkgc2NoZW1hIGZvciBhIG1hdGNoZWQgcm91dGUuICovXG4gIGZ1bmN0aW9uIHJlYWRBY3RpdmVRdWVyeVNjaGVtYShcbiAgICByb3V0ZTogUm91dGVyRW50cnlTdGF0ZTxUQ29udGV4dD5bJ3JvdXRlJ10sXG4gICk6IFJvdXRlclF1ZXJ5U2NoZW1hIHtcbiAgICByZXR1cm4gcm91dGU/LnJvdXRlLnJvdXRlcy5hdCgtMSk/LnF1ZXJ5U2NoZW1hO1xuICB9XG5cbiAgLyoqIFBhcnNlcyByYXcgcXVlcnkgYW5kIHR5cGVkIGZpbHRlcnMgZm9yIHRoZSBwcm92aWRlZCBzZWFyY2ggc3RyaW5nLiAqL1xuICBmdW5jdGlvbiBwYXJzZVNlYXJjaFN0YXRlKFxuICAgIHNlYXJjaDogc3RyaW5nLFxuICAgIHF1ZXJ5U2NoZW1hOiBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgKTogUGFyc2VkU2VhcmNoU3RhdGUge1xuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyc2VSYXdRdWVyeShzZWFyY2gpO1xuICAgIGlmIChxdWVyeVNjaGVtYSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4geyBxdWVyeSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRmlsdGVycyhzZWFyY2gsIHF1ZXJ5U2NoZW1hKTtcbiAgICByZXR1cm4ge1xuICAgICAgcXVlcnksXG4gICAgICBmaWx0ZXJzOiBwYXJzZWQuZmlsdGVycyxcbiAgICAgIGZpbHRlckRpYWdub3N0aWNzOiBwYXJzZWQuZGlhZ25vc3RpY3MsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBSZWFkcyBhIHBhZ2UgbnVtYmVyIGZyb20gZWl0aGVyIGBwYWdlYCBvciBgcGFnZS5lcWAgZmlsdGVyIHNoYXBlcy4gKi9cbiAgZnVuY3Rpb24gcmVhZFBhZ2VWYWx1ZShmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnMpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChmaWx0ZXJzID09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3UGFnZSA9IGZpbHRlcnMucGFnZTtcbiAgICBpZiAodHlwZW9mIHJhd1BhZ2UgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gcmF3UGFnZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcmF3UGFnZSAhPSBudWxsICYmXG4gICAgICB0eXBlb2YgcmF3UGFnZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KHJhd1BhZ2UpICYmXG4gICAgICB0eXBlb2YgKHJhd1BhZ2UgYXMgeyBlcT86IHVua25vd24gfSkuZXEgPT09ICdudW1iZXInXG4gICAgKSB7XG4gICAgICByZXR1cm4gKHJhd1BhZ2UgYXMgeyBlcTogbnVtYmVyIH0pLmVxO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIE5vcm1hbGl6ZXMgdGhlIHBhZ2UgZmlsdGVyIHRvIGEgbWluaW11bSB2YWx1ZSBvZiAxIHdoZW4gcHJlc2VudC4gKi9cbiAgZnVuY3Rpb24gbm9ybWFsaXplUGFnZUZpbHRlcnMoZmlsdGVycz86IFVua25vd25GaWx0ZXJzKToge1xuICAgIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbiAgICBub3JtYWxpemVkOiBib29sZWFuO1xuICB9IHtcbiAgICBjb25zdCBwYWdlVmFsdWUgPSByZWFkUGFnZVZhbHVlKGZpbHRlcnMpO1xuICAgIGlmIChwYWdlVmFsdWUgPT0gbnVsbCB8fCBwYWdlVmFsdWUgPj0gMSB8fCBmaWx0ZXJzID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIG5vcm1hbGl6ZWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICAuLi5maWx0ZXJzLFxuICAgICAgICBwYWdlOiB7IGVxOiAxIH0sXG4gICAgICB9LFxuICAgICAgbm9ybWFsaXplZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENvbnZlcnRzIHJvdXRlciBzZWFyY2ggc3RhdGUgaW50byB0aGUgb2JqZWN0IGZvcndhcmRlZCB0byBgcHJlcGFyZWAuICovXG4gIGZ1bmN0aW9uIGJ1aWxkUHJlcGFyZVF1ZXJ5SW5wdXQoXG4gICAgc3RhdGU6IFBhcnNlZFNlYXJjaFN0YXRlLFxuICAgIHF1ZXJ5U2NoZW1hOiBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgKTogUHJlcGFyZVF1ZXJ5SW5wdXQge1xuICAgIGlmIChxdWVyeVNjaGVtYSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gc3RhdGUuZmlsdGVycyA/PyB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlLnF1ZXJ5O1xuICB9XG5cbiAgLyoqIEJ1aWxkcyBhIHNuYXBzaG90IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHJvdXRlciBlbnRyeS4gKi9cbiAgZnVuY3Rpb24gYnVpbGRFbnRyeVNuYXBzaG90KFxuICAgIGVudHJ5OiBSb3V0ZXJFbnRyeVN0YXRlPFRDb250ZXh0PixcbiAgKTogUm91dGVyRW50cnlTbmFwc2hvdCB7XG4gICAgY29uc3QgcHJlcGFyZWRTZWdtZW50cyA9IGVudHJ5LnByZXBhcmVkTWF0Y2guc2VnbWVudHMubWFwKChzZWdtZW50KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiBzZWdtZW50LnBhdGgsXG4gICAgICAgIGZ1bGxQYXRoOiBzZWdtZW50LmZ1bGxQYXRoLFxuICAgICAgICBzZWdtZW50SW5kZXg6IHNlZ21lbnQuc2VnbWVudEluZGV4LFxuICAgICAgICBwcmVwYXJlZFJlc291cmNlOiBzZWdtZW50LnByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgIHJlZGlyZWN0VG86IHNlZ21lbnQucmVkaXJlY3RUbyxcbiAgICAgICAgaGlnaGxpZ2h0SWQ6IHNlZ21lbnQuaGlnaGxpZ2h0SWQsXG4gICAgICAgIHF1ZXJ5U2NoZW1hOiBzZWdtZW50LnF1ZXJ5U2NoZW1hLFxuICAgICAgICBwcmVwYXJlZFN0YXR1czogc2VnbWVudC5wcmVwYXJlZFJlc291cmNlPy5nZXRTdGF0dXMoKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb246IG5vcm1hbGl6ZUxvY2F0aW9uKGVudHJ5LmxvY2F0aW9uKSxcbiAgICAgIHJvdXRlUGF0aDogcmVhZE1hdGNoZWRSb3V0ZVBhdGgoZW50cnkpLFxuICAgICAgcHJlcGFyZWRNYXRjaDoge1xuICAgICAgICBzZWdtZW50czogcHJlcGFyZWRTZWdtZW50cyxcbiAgICAgICAgcm91dGVzOiBwcmVwYXJlZFNlZ21lbnRzLFxuICAgICAgfSxcbiAgICAgIGZpbHRlcnM6IGVudHJ5LmZpbHRlcnMsXG4gICAgICBmaWx0ZXJEaWFnbm9zdGljczogZW50cnkuZmlsdGVyRGlhZ25vc3RpY3MsXG4gICAgICBhY3RpdmVRdWVyeVNjaGVtYTogZW50cnkuYWN0aXZlUXVlcnlTY2hlbWEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBOb3RpZmllcyBpbnN0cnVtZW50YXRpb25zIG9mIGEgbmV3IGFjdGl2ZSBlbnRyeS4gKi9cbiAgZnVuY3Rpb24gbm90aWZ5RW50cnkoZW50cnk6IFJvdXRlckVudHJ5U3RhdGU8VENvbnRleHQ+KTogdm9pZCB7XG4gICAgcmVnaXN0cnkubm90aWZ5RW50cnlDaGFuZ2UoYnVpbGRFbnRyeVNuYXBzaG90KGVudHJ5KSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIGRlZHVwbGljYXRpb24ga2V5IGZvciBwcmVsb2FkIGV2ZW50cy4gKi9cbiAgZnVuY3Rpb24gYnVpbGRQcmVsb2FkS2V5KFxuICAgIG1vZGU6IFJvdXRlclByZWxvYWRNb2RlVmFsdWUsXG4gICAgcGF0aG5hbWU6IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bW9kZX06JHtwYXRobmFtZX1gO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgcHJlbG9hZCBvciBwcmVsb2FkLWNvZGUgaW5zdHJ1bWVudGF0aW9uIGV2ZW50LiAqL1xuICBmdW5jdGlvbiBlbWl0UHJlbG9hZEV2ZW50KFxuICAgIG1vZGU6ICdjb2RlJyB8ICdmdWxsJyxcbiAgICBwYXRobmFtZTogc3RyaW5nLFxuICAgIHNvdXJjZTogUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBrZXkgPSBidWlsZFByZWxvYWRLZXkobW9kZSwgcGF0aG5hbWUpO1xuICAgIGNvbnN0IHJlY2VudGx5UmVjb3JkZWQgPVxuICAgICAgbGFzdFByZWxvYWRTaWduYXR1cmUgIT09IG51bGwgJiZcbiAgICAgIGxhc3RQcmVsb2FkU2lnbmF0dXJlLmtleSA9PT0ga2V5ICYmXG4gICAgICBub3cgLSBsYXN0UHJlbG9hZFNpZ25hdHVyZS50aW1lc3RhbXAgPCA1MDtcblxuICAgIGlmICghcmVjZW50bHlSZWNvcmRlZCkge1xuICAgICAgZW1pdEV2ZW50KHtcbiAgICAgICAga2luZDogJ3ByZWxvYWQnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRpbWVzdGFtcDogbm93LFxuICAgICAgICBsb2NhdGlvbjogbm9ybWFsaXplTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiksXG4gICAgICAgIHRhcmdldFBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICAgICAgbW9kZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxhc3RQcmVsb2FkU2lnbmF0dXJlID0geyBrZXksIHRpbWVzdGFtcDogbm93IH07XG4gIH1cblxuICAvKiogRW1pdHMgYSBoaXN0b3J5IG11dGF0aW9uIGV2ZW50IChwdXNoL3JlcGxhY2Uvbm9ybWFsaXplKS4gKi9cbiAgZnVuY3Rpb24gZW1pdEhpc3RvcnlFdmVudChcbiAgICBhY3Rpb246IFJvdXRlckhpc3RvcnlBY3Rpb25WYWx1ZSxcbiAgICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UsXG4gICAgbG9jYXRpb246IHsgcGF0aG5hbWU6IHN0cmluZzsgc2VhcmNoPzogc3RyaW5nOyBoYXNoPzogc3RyaW5nIH0sXG4gICAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiB2b2lkIHtcbiAgICBwZW5kaW5nTmF2aWdhdGlvbk9yaWdpbiA9IHNvdXJjZTtcbiAgICBlbWl0RXZlbnQoe1xuICAgICAga2luZDogJ2hpc3RvcnknLFxuICAgICAgc291cmNlLFxuICAgICAgYWN0aW9uLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgbG9jYXRpb246IG5vcm1hbGl6ZUxvY2F0aW9uKGxvY2F0aW9uKSxcbiAgICAgIGRldGFpbHMsXG4gICAgfSk7XG4gIH1cblxuICAvLyBCdWlsZCBhIGZsYXQgbGlzdCBvZiByb3V0ZXMgZm9yIGVmZmljaWVudCBtYXRjaGluZ1xuICBjb25zdCBmbGF0Um91dGVzID0gYnVpbGRSb3V0ZXMocm91dGVzKTtcblxuICAvLyBGaW5kIHRoZSBpbml0aWFsIHJvdXRlIG1hdGNoIGFuZCBwcmVwYXJlIGl0IGZvciByZW5kZXJpbmdcbiAgY29uc3Qgcm91dGUgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywgaGlzdG9yeS5sb2NhdGlvbik7XG4gIGNvbnN0IGluaXRpYWxVbmlmaWVkU2NoZW1hID0gcmVhZEFjdGl2ZVF1ZXJ5U2NoZW1hKHJvdXRlKTtcbiAgY29uc3QgaW5pdGlhbFNlYXJjaFN0YXRlID0gcGFyc2VTZWFyY2hTdGF0ZShcbiAgICBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCxcbiAgICBpbml0aWFsVW5pZmllZFNjaGVtYSxcbiAgKTtcbiAgY29uc3Qgbm9ybWFsaXplZEluaXRpYWxGaWx0ZXJzID0gbm9ybWFsaXplUGFnZUZpbHRlcnMoXG4gICAgaW5pdGlhbFNlYXJjaFN0YXRlLmZpbHRlcnMsXG4gICk7XG4gIGNvbnN0IGluaXRpYWxMb2NhdGlvblNuYXBzaG90ID0gbm9ybWFsaXplTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbik7XG4gIGxldCBpbml0aWFsSW5zdHJ1bWVudGF0aW9uOlxuICAgIHwge1xuICAgICAgICBlbWl0OiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB2b2lkO1xuICAgICAgICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gICAgICAgIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkO1xuICBpZiAocm91dGUgIT0gbnVsbCkge1xuICAgIGluaXRpYWxJbnN0cnVtZW50YXRpb24gPSB7XG4gICAgICBlbWl0OiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB7XG4gICAgICAgIGVtaXRFdmVudChldmVudCk7XG4gICAgICB9LFxuICAgICAgc291cmNlOiBsYXN0TmF2aWdhdGlvbk9yaWdpbixcbiAgICAgIGxvY2F0aW9uOiBpbml0aWFsTG9jYXRpb25TbmFwc2hvdCxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGluaXRpYWxDb250ZXh0ID0gcmVzb2x2ZUNvbnRleHQoKTtcbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChcbiAgICByb3V0ZSxcbiAgICBidWlsZFByZXBhcmVRdWVyeUlucHV0KFxuICAgICAge1xuICAgICAgICAuLi5pbml0aWFsU2VhcmNoU3RhdGUsXG4gICAgICAgIGZpbHRlcnM6IG5vcm1hbGl6ZWRJbml0aWFsRmlsdGVycy5maWx0ZXJzLFxuICAgICAgfSxcbiAgICAgIGluaXRpYWxVbmlmaWVkU2NoZW1hLFxuICAgICksXG4gICAgaW5pdGlhbEluc3RydW1lbnRhdGlvbixcbiAgICBpbml0aWFsQ29udGV4dCxcbiAgKTtcbiAgLy8gSGVscGVyIHRvIGJ1aWxkIHRoZSByYXcgcXVlcnkgb2JqZWN0IGZyb20gYSBzZWFyY2ggc3RyaW5nXG4gIGxldCBjdXJyZW50RW50cnk6IFJvdXRlckVudHJ5U3RhdGU8VENvbnRleHQ+ID0ge1xuICAgIGZvcmNlUmVyZW5kZXI6IGZhbHNlLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLFxuICAgIHJvdXRlLFxuICAgIHByZXBhcmVkTWF0Y2gsXG4gICAgY29udGV4dDogaW5pdGlhbENvbnRleHQsXG4gICAgcmF3U2VhcmNoOiBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCxcbiAgICBxdWVyeTogaW5pdGlhbFNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgIC8vIHR5cGVkUXVlcnkgcmVtb3ZlZCAodW5pZmllZCBpbnRvIGZpbHRlcnMvcXVlcnkpXG4gICAgZmlsdGVyczogbm9ybWFsaXplZEluaXRpYWxGaWx0ZXJzLmZpbHRlcnMsXG4gICAgZmlsdGVyRGlhZ25vc3RpY3M6IGluaXRpYWxTZWFyY2hTdGF0ZS5maWx0ZXJEaWFnbm9zdGljcyxcbiAgICBhY3RpdmVRdWVyeVNjaGVtYTogaW5pdGlhbFVuaWZpZWRTY2hlbWEsXG4gIH07XG5cbiAgLy8gSW5pdGlhbCBub3JtYWxpemF0aW9uIHBhc3MgKGUuZy4sIGNsYW1wIHBhZ2UpXG4gIGlmIChcbiAgICBub3JtYWxpemVkSW5pdGlhbEZpbHRlcnMubm9ybWFsaXplZCAmJlxuICAgIGluaXRpYWxVbmlmaWVkU2NoZW1hICE9IG51bGwgJiZcbiAgICBub3JtYWxpemVkSW5pdGlhbEZpbHRlcnMuZmlsdGVycyAhPSBudWxsXG4gICkge1xuICAgIGN1cnJlbnRFbnRyeS5maWx0ZXJzID0gbm9ybWFsaXplZEluaXRpYWxGaWx0ZXJzLmZpbHRlcnM7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaCA9IGJ1aWxkQ29tYmluZWRTZWFyY2goe1xuICAgICAgZmlsdGVyczogbm9ybWFsaXplZEluaXRpYWxGaWx0ZXJzLmZpbHRlcnMsXG4gICAgICBxdWVyeTogaW5pdGlhbFNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgICAgcXVlcnlTY2hlbWE6IGluaXRpYWxVbmlmaWVkU2NoZW1hLFxuICAgIH0pOyAvLyByZXR1cm5zICcnIG9yIHN0cmluZyBzdGFydGluZyB3aXRoICc/J1xuICAgIGlmIChub3JtYWxpemVkU2VhcmNoICE9PSBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCkge1xuICAgICAgZW1pdEhpc3RvcnlFdmVudChcbiAgICAgICAgJ25vcm1hbGl6ZScsXG4gICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICB7XG4gICAgICAgICAgcGF0aG5hbWU6IGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgc2VhcmNoOiBub3JtYWxpemVkU2VhcmNoLFxuICAgICAgICAgIGhhc2g6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB7IHJlYXNvbjogJ2luaXRpYWwtcGFnZS1jbGFtcCcgfSxcbiAgICAgICk7XG4gICAgICBjb25zdCBub3JtYWxpemVEZWJ1Z0NvbnRleHQ6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICAgIG9yaWdpbjogJ25vcm1hbGl6ZScsXG4gICAgICAgIHRyaWdnZXI6ICdub3JtYWxpemUnLFxuICAgICAgfTtcbiAgICAgIGhpc3Rvcnkuc2V0KHtcbiAgICAgICAgcGF0aG5hbWU6IGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaDogbm9ybWFsaXplZFNlYXJjaCxcbiAgICAgICAgaGFzaDogJycsXG4gICAgICAgIGRlYnVnQ29udGV4dDogbm9ybWFsaXplRGVidWdDb250ZXh0LFxuICAgICAgfSk7XG4gICAgICAvLyBVcGRhdGUgY3VycmVudEVudHJ5LmxvY2F0aW9uIHRvIHJlZmxlY3QgbmV3IHNlYXJjaCBkaXJlY3RseSAoaGlzdG9yeS5zZXQgdHJpZ2dlcnMgYXN5bmMgc3Vic2NyaWJlcilcbiAgICAgIGN1cnJlbnRFbnRyeSA9IHtcbiAgICAgICAgLi4uY3VycmVudEVudHJ5LFxuICAgICAgICBsb2NhdGlvbjogeyAuLi5jdXJyZW50RW50cnkubG9jYXRpb24sIHNlYXJjaDogbm9ybWFsaXplZFNlYXJjaCB9LFxuICAgICAgICByYXdTZWFyY2g6IG5vcm1hbGl6ZWRTZWFyY2gsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmeUVudHJ5KGN1cnJlbnRFbnRyeSk7XG4gIGVtaXRFdmVudCh7XG4gICAga2luZDogJ3NuYXBzaG90JyxcbiAgICBzb3VyY2U6IGxhc3ROYXZpZ2F0aW9uT3JpZ2luLFxuICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICBsb2NhdGlvbjogbm9ybWFsaXplTG9jYXRpb24oY3VycmVudEVudHJ5LmxvY2F0aW9uKSxcbiAgICByb3V0ZVBhdGg6IHJlYWRNYXRjaGVkUm91dGVQYXRoKGN1cnJlbnRFbnRyeSksXG4gIH0pO1xuXG4gIC8vIE1haW50YWluIGEgc2V0IG9mIHN1YnNjcmliZXJzIHRvIHRoZSBhY3RpdmUgcm91dGUgZW50cnlcbiAgbGV0IG5leHRJZCA9IDA7XG4gIGNvbnN0IHN1YnNjcmliZXJzID0gbmV3IE1hcDxcbiAgICBudW1iZXIsXG4gICAgU3Vic2NyaWJlQ2FsbGJhY2s8UGFyYW1EYXRhLCBSb3V0ZXJRdWVyeVNjaGVtYSwgVENvbnRleHQ+XG4gID4oKTtcblxuICAvLyBMaXN0ZW4gZm9yIGxvY2F0aW9uIGNoYW5nZXMsIG1hdGNoIHRvIHRoZSByb3V0ZSBlbnRyeSwgcHJlcGFyZSB0aGUgZW50cnksXG4gIC8vIGFuZCBub3RpZnkgc3Vic2NyaWJlcnMuIFRoaXMgcGF0dGVybiBlbnN1cmVzIHRoYXQgZGF0YS1sb2FkaW5nXG4gIC8vIG9jY3VycyAqb3V0c2lkZSogb2YgLSBhbmQgKmJlZm9yZSogLSByZW5kZXJpbmcuXG4gIGNvbnN0IGRpc3Bvc2VIaXN0b3J5ID0gaGlzdG9yeS5zdWJzY3JpYmUoXG4gICAgKGxvY2F0aW9uLCBmb3JjZVJlcmVuZGVyLCBkZWJ1Z0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHJlc29sdmVOYXZpZ2F0aW9uT3JpZ2luKGRlYnVnQ29udGV4dCk7XG4gICAgICBsYXN0TmF2aWdhdGlvbk9yaWdpbiA9IG9yaWdpbjtcbiAgICAgIGNvbnN0IGxvY2F0aW9uUGF5bG9hZCA9IG5vcm1hbGl6ZUxvY2F0aW9uKGxvY2F0aW9uKTtcblxuICAgICAgY29uc3QgZGVidWdDb250ZXh0T3JpZ2luID0gZGVidWdDb250ZXh0Py5vcmlnaW47XG4gICAgICBpZiAoZGVidWdDb250ZXh0T3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IGhpc3RvcnlEZXRhaWxzOiB7IGhpc3RvcnlJbmRleDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0eXBlb2YgZGVidWdDb250ZXh0Py5oaXN0b3J5SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaGlzdG9yeURldGFpbHMgPSB7IGhpc3RvcnlJbmRleDogZGVidWdDb250ZXh0Lmhpc3RvcnlJbmRleCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRlYnVnQ29udGV4dE9yaWdpbiA9PT0gJ3BvcHN0YXRlLWJhY2snIHx8XG4gICAgICAgICAgZGVidWdDb250ZXh0T3JpZ2luID09PSAncG9wc3RhdGUtZm9yd2FyZCcgfHxcbiAgICAgICAgICBkZWJ1Z0NvbnRleHRPcmlnaW4gPT09ICdwb3BzdGF0ZS11bmtub3duJyB8fFxuICAgICAgICAgIGRlYnVnQ29udGV4dE9yaWdpbiA9PT0gJ2V4dGVybmFsJ1xuICAgICAgICApIHtcbiAgICAgICAgICBsZXQgZGlyZWN0aW9uOiAnYmFjaycgfCAnZm9yd2FyZCcgfCAndW5rbm93bicgPSAndW5rbm93bic7XG4gICAgICAgICAgaWYgKGRlYnVnQ29udGV4dE9yaWdpbiA9PT0gJ3BvcHN0YXRlLWJhY2snKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAnYmFjayc7XG4gICAgICAgICAgfSBlbHNlIGlmIChkZWJ1Z0NvbnRleHRPcmlnaW4gPT09ICdwb3BzdGF0ZS1mb3J3YXJkJykge1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gJ2ZvcndhcmQnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbWl0RXZlbnQoe1xuICAgICAgICAgICAga2luZDogJ3BvcHN0YXRlJyxcbiAgICAgICAgICAgIHNvdXJjZTogb3JpZ2luLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uUGF5bG9hZCxcbiAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgIGRldGFpbHM6IGhpc3RvcnlEZXRhaWxzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNhbWVQYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lID09PSBjdXJyZW50RW50cnkubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICBjb25zdCBzYW1lU2VhcmNoID0gbG9jYXRpb24uc2VhcmNoID09PSBjdXJyZW50RW50cnkucmF3U2VhcmNoO1xuXG4gICAgICBpZiAoIWZvcmNlUmVyZW5kZXIgJiYgc2FtZVBhdGhuYW1lICYmIHNhbWVTZWFyY2gpIHtcbiAgICAgICAgLy8gTm90aGluZyBjaGFuZ2VkIHRoYXQgd2UgY2FyZSBhYm91dFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRDb250ZXh0ID0gcmVzb2x2ZUNvbnRleHQoKTtcblxuICAgICAgLy8gSWYgb25seSB0aGUgc2VhcmNoIGNoYW5nZWQgd2Ugc3RpbGwgd2FudCB0byBwcm9wYWdhdGUgdGhlIGNoYW5nZS5cbiAgICAgIC8vIEtlZXAgdGhlIGV4aXN0aW5nIHByZXBhcmVkTWF0Y2ggd2hlbiBwYXRobmFtZSBpcyBpZGVudGljYWwgdG8gYXZvaWQgcmVkdW5kYW50IHdvcmsuXG4gICAgICBsZXQgbmV4dFByZXBhcmVkTWF0Y2ggPSBjdXJyZW50RW50cnkucHJlcGFyZWRNYXRjaDtcbiAgICAgIGxldCBuZXh0Um91dGUgPSBjdXJyZW50RW50cnkucm91dGU7XG5cbiAgICAgIGlmICghc2FtZVBhdGhuYW1lKSB7XG4gICAgICAgIG5leHRSb3V0ZSA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCBsb2NhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1aWxkIHJhdyBxdWVyeSBvYmplY3QgKGJhc2ljIGFnZ3JlZ2F0aW9uKSBmcm9tIGxvY2F0aW9uLnNlYXJjaFxuICAgICAgY29uc3QgcXVlcnlTY2hlbWEgPSByZWFkQWN0aXZlUXVlcnlTY2hlbWEobmV4dFJvdXRlKTtcbiAgICAgIGNvbnN0IHBhcnNlZFNlYXJjaFN0YXRlID0gcGFyc2VTZWFyY2hTdGF0ZShsb2NhdGlvbi5zZWFyY2gsIHF1ZXJ5U2NoZW1hKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGaWx0ZXJzID0gbm9ybWFsaXplUGFnZUZpbHRlcnMocGFyc2VkU2VhcmNoU3RhdGUuZmlsdGVycyk7XG5cbiAgICAgIC8vIElmIG9ubHkgdGhlIHNlYXJjaCBjaGFuZ2VkIChzYW1lIHBhdGhuYW1lKSB3ZSBzdGlsbCBuZWVkIHRvIHJlLXJ1biBwcmVwYXJlXG4gICAgICBpZiAoIXNhbWVQYXRobmFtZSB8fCAhc2FtZVNlYXJjaCkge1xuICAgICAgICBsZXQgdXBkYXRlSW5zdHJ1bWVudGF0aW9uOlxuICAgICAgICAgIHwge1xuICAgICAgICAgICAgICBlbWl0OiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB2b2lkO1xuICAgICAgICAgICAgICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gICAgICAgICAgICAgIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAobmV4dFJvdXRlICE9IG51bGwpIHtcbiAgICAgICAgICB1cGRhdGVJbnN0cnVtZW50YXRpb24gPSB7XG4gICAgICAgICAgICBlbWl0OiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGVtaXRFdmVudChldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc291cmNlOiBvcmlnaW4sXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb25QYXlsb2FkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgbmV4dFByZXBhcmVkTWF0Y2ggPSBwcmVwYXJlTWF0Y2goXG4gICAgICAgICAgbmV4dFJvdXRlLFxuICAgICAgICAgIGJ1aWxkUHJlcGFyZVF1ZXJ5SW5wdXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnBhcnNlZFNlYXJjaFN0YXRlLFxuICAgICAgICAgICAgICBmaWx0ZXJzOiBub3JtYWxpemVkRmlsdGVycy5maWx0ZXJzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgICAgICksXG4gICAgICAgICAgdXBkYXRlSW5zdHJ1bWVudGF0aW9uLFxuICAgICAgICAgIG5leHRDb250ZXh0LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0RW50cnk6IFJvdXRlckVudHJ5U3RhdGU8VENvbnRleHQ+ID0ge1xuICAgICAgICBmb3JjZVJlcmVuZGVyOiBmb3JjZVJlcmVuZGVyIHx8IChzYW1lUGF0aG5hbWUgJiYgIXNhbWVTZWFyY2gpLFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgcm91dGU6IG5leHRSb3V0ZSxcbiAgICAgICAgcHJlcGFyZWRNYXRjaDogbmV4dFByZXBhcmVkTWF0Y2gsXG4gICAgICAgIGNvbnRleHQ6IG5leHRDb250ZXh0LFxuICAgICAgICByYXdTZWFyY2g6IGxvY2F0aW9uLnNlYXJjaCxcbiAgICAgICAgcXVlcnk6IHBhcnNlZFNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgICAgICBmaWx0ZXJzOiBub3JtYWxpemVkRmlsdGVycy5maWx0ZXJzLFxuICAgICAgICBmaWx0ZXJEaWFnbm9zdGljczogcGFyc2VkU2VhcmNoU3RhdGUuZmlsdGVyRGlhZ25vc3RpY3MsXG4gICAgICAgIGFjdGl2ZVF1ZXJ5U2NoZW1hOiBxdWVyeVNjaGVtYSxcbiAgICAgIH07XG5cbiAgICAgIC8vIElmIG5vcm1hbGl6YXRpb24gY2hhbmdlZCB0aGUgdHlwZWQgcXVlcnkgd2UgdHJpZ2dlciBhIHJlcGxhY2Ugd2l0aCBub3JtYWxpemVkIHNlYXJjaFxuICAgICAgaWYgKG5vcm1hbGl6ZWRGaWx0ZXJzLm5vcm1hbGl6ZWQgJiYgcXVlcnlTY2hlbWEgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoID0gYnVpbGRDb21iaW5lZFNlYXJjaCh7XG4gICAgICAgICAgZmlsdGVyczogbm9ybWFsaXplZEZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgICBxdWVyeTogcGFyc2VkU2VhcmNoU3RhdGUucXVlcnksXG4gICAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobm9ybWFsaXplZFNlYXJjaCAhPT0gbG9jYXRpb24uc2VhcmNoKSB7XG4gICAgICAgICAgbGV0IG5leHRTZWFyY2hTdHIgPSBub3JtYWxpemVkU2VhcmNoO1xuICAgICAgICAgIGlmICghbmV4dFNlYXJjaFN0ci5zdGFydHNXaXRoKCc/JykgJiYgbmV4dFNlYXJjaFN0ci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBuZXh0U2VhcmNoU3RyID0gYD8ke25leHRTZWFyY2hTdHJ9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZW1pdEhpc3RvcnlFdmVudChcbiAgICAgICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAgICAgJ25vcm1hbGl6ZScsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICAgICAgc2VhcmNoOiBuZXh0U2VhcmNoU3RyLFxuICAgICAgICAgICAgICBoYXNoOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHJlYXNvbjogJ3J1bnRpbWUtcGFnZS1jbGFtcCcgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHJ1bnRpbWVOb3JtYWxpemVDb250ZXh0OiBIaXN0b3J5RGVidWdDb250ZXh0ID0ge1xuICAgICAgICAgICAgb3JpZ2luOiAnbm9ybWFsaXplJyxcbiAgICAgICAgICAgIHRyaWdnZXI6ICdub3JtYWxpemUnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaGlzdG9yeS5zZXQoe1xuICAgICAgICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgICAgc2VhcmNoOiBuZXh0U2VhcmNoU3RyLFxuICAgICAgICAgICAgaGFzaDogJycsXG4gICAgICAgICAgICBkZWJ1Z0NvbnRleHQ6IHJ1bnRpbWVOb3JtYWxpemVDb250ZXh0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjsgLy8gZWFybHk6IHN1YnNlcXVlbnQgc2V0IHdpbGwgdHJpZ2dlciByZXJ1blxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjdXJyZW50IGVudHJ5IGFuZCBub3RpZnkgYWxsIHN1YnNjcmliZXJzXG4gICAgICBjdXJyZW50RW50cnkgPSBuZXh0RW50cnk7XG4gICAgICBzdWJzY3JpYmVycy5mb3JFYWNoKChjYWxsYmFjaykgPT4ge1xuICAgICAgICBjYWxsYmFjayhuZXh0RW50cnkpO1xuICAgICAgfSk7XG4gICAgICBub3RpZnlFbnRyeShuZXh0RW50cnkpO1xuICAgICAgZW1pdEV2ZW50KHtcbiAgICAgICAga2luZDogJ3NuYXBzaG90JyxcbiAgICAgICAgc291cmNlOiBvcmlnaW4sXG4gICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uUGF5bG9hZCxcbiAgICAgICAgcm91dGVQYXRoOiByZWFkTWF0Y2hlZFJvdXRlUGF0aChuZXh0RW50cnkpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgKTtcblxuICAvKiogTm9ybWFsaXplcyB1c2VyLXByb3ZpZGVkIHByZWxvYWQgdGFyZ2V0cyBpbnRvIGNvbnNpc3RlbnQgc3RydWN0dXJlcy4gKi9cbiAgZnVuY3Rpb24gbm9ybWFsaXplUHJlbG9hZFRhcmdldCh0YXJnZXQ6IFByZWxvYWRUYXJnZXQpOiB7XG4gICAgcGF0aG5hbWU6IHN0cmluZztcbiAgICBzZWFyY2g6IHN0cmluZztcbiAgICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIH0ge1xuICAgIGxldCBub3JtYWxpemVkUGF0aG5hbWUgPSBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0LnBhdGhuYW1lID09PSAnc3RyaW5nJyAmJiB0YXJnZXQucGF0aG5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgbm9ybWFsaXplZFBhdGhuYW1lID0gdGFyZ2V0LnBhdGhuYW1lO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkU2VhcmNoID0gJyc7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQuc2VhcmNoID09PSAnc3RyaW5nJykge1xuICAgICAgbm9ybWFsaXplZFNlYXJjaCA9IHRhcmdldC5zZWFyY2g7XG4gICAgfVxuXG4gICAgbGV0IG5vcm1hbGl6ZWRTb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2UgPSAncHJvZ3JhbW1hdGljJztcbiAgICBjb25zdCBtYXBwZWRTb3VyY2UgPSBtYXBPcmlnaW4odGFyZ2V0LnNvdXJjZSk7XG4gICAgaWYgKG1hcHBlZFNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBub3JtYWxpemVkU291cmNlID0gbWFwcGVkU291cmNlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aG5hbWU6IG5vcm1hbGl6ZWRQYXRobmFtZSxcbiAgICAgIHNlYXJjaDogbm9ybWFsaXplZFNlYXJjaCxcbiAgICAgIHNvdXJjZTogbm9ybWFsaXplZFNvdXJjZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByZXBhcmVkIHZhbHVlIGZvciB0aGUgZmlyc3QgYWN0aXZlIHNlZ21lbnQgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUm91dGUgc2VnbWVudCBwYXRoIG9yIGZ1bGwgcGF0aCB0byBpbnNwZWN0LlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UHJlcGFyZWQocGF0aDogc3RyaW5nKTogdW5rbm93biB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gY3VycmVudEVudHJ5O1xuICAgICAgZm9yIChjb25zdCBwcmVwYXJlZFJvdXRlIG9mIGVudHJ5LnByZXBhcmVkTWF0Y2guc2VnbWVudHMpIHtcbiAgICAgICAgaWYgKHByZXBhcmVkUm91dGUucGF0aCA9PT0gcGF0aCB8fCBwcmVwYXJlZFJvdXRlLmZ1bGxQYXRoID09PSBwYXRoKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmVkUm91dGUucHJlcGFyZWRSZXNvdXJjZT8uZ2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGV2ZXJ5IGFjdGl2ZSBwcmVwYXJlZCBzZWdtZW50IG1hdGNoaW5nIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJvdXRlIHNlZ21lbnQgcGF0aCBvciBmdWxsIHBhdGggdG8gaW5zcGVjdC5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFByZXBhcmVkU2VnbWVudHMocGF0aDogc3RyaW5nKTogUHJlcGFyZWRSb3V0ZVNlZ21lbnRTbmFwc2hvdFtdIHtcbiAgICByZXR1cm4gY3VycmVudEVudHJ5LnByZXBhcmVkTWF0Y2guc2VnbWVudHNcbiAgICAgIC5maWx0ZXIoKHByZXBhcmVkUm91dGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHByZXBhcmVkUm91dGUucGF0aCA9PT0gcGF0aCB8fCBwcmVwYXJlZFJvdXRlLmZ1bGxQYXRoID09PSBwYXRoO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKHByZXBhcmVkUm91dGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBwcmVwYXJlZFJvdXRlLnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHByZXBhcmVkUm91dGUuZnVsbFBhdGgsXG4gICAgICAgICAgc2VnbWVudEluZGV4OiBwcmVwYXJlZFJvdXRlLnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlZFJlc291cmNlOiBwcmVwYXJlZFJvdXRlLnByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgICAgcmVkaXJlY3RUbzogcHJlcGFyZWRSb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlc291cmNlUGFnZTogcHJlcGFyZWRSb3V0ZS5yZXNvdXJjZVBhZ2UsXG4gICAgICAgICAgaGlnaGxpZ2h0SWQ6IHByZXBhcmVkUm91dGUuaGlnaGxpZ2h0SWQsXG4gICAgICAgICAgcXVlcnlTY2hlbWE6IHByZXBhcmVkUm91dGUucXVlcnlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIFRoZSByb3V0ZXIgY29udGV4dCBvYmplY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBSZWFjdCBDb250ZXh0XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgaGlzdG9yeSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gY3VycmVudEVudHJ5O1xuICAgIH0sXG4gICAgcHJlbG9hZENvZGUodGFyZ2V0KSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUHJlbG9hZFRhcmdldCh0YXJnZXQpO1xuICAgICAgZW1pdFByZWxvYWRFdmVudCgnY29kZScsIG5vcm1hbGl6ZWQucGF0aG5hbWUsIG5vcm1hbGl6ZWQuc291cmNlKTtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywge1xuICAgICAgICAuLi5oaXN0b3J5LmxvY2F0aW9uLFxuICAgICAgICBwYXRobmFtZTogbm9ybWFsaXplZC5wYXRobmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobWF0Y2hlcyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWF0Y2hlcy5yb3V0ZS5yb3V0ZXMuZm9yRWFjaCgoeyByZXNvdXJjZVBhZ2UgfSkgPT4ge1xuICAgICAgICBpZiAocmVzb3VyY2VQYWdlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICByZXNvdXJjZVBhZ2UubG9hZCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwcmVsb2FkKHRhcmdldCkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVByZWxvYWRUYXJnZXQodGFyZ2V0KTtcbiAgICAgIGVtaXRQcmVsb2FkRXZlbnQoJ2Z1bGwnLCBub3JtYWxpemVkLnBhdGhuYW1lLCBub3JtYWxpemVkLnNvdXJjZSk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIHtcbiAgICAgICAgLi4uaGlzdG9yeS5sb2NhdGlvbixcbiAgICAgICAgcGF0aG5hbWU6IG5vcm1hbGl6ZWQucGF0aG5hbWUsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxvY2F0aW9uU25hcHNob3Q6IFJvdXRlckxvY2F0aW9uU25hcHNob3QgPSB7XG4gICAgICAgIHBhdGhuYW1lOiBub3JtYWxpemVkLnBhdGhuYW1lLFxuICAgICAgICBzZWFyY2g6IG5vcm1hbGl6ZWQuc2VhcmNoLFxuICAgICAgICBoYXNoOiAnJyxcbiAgICAgIH07XG4gICAgICBsZXQgaW5zdHJ1bWVudGF0aW9uOlxuICAgICAgICB8IHtcbiAgICAgICAgICAgIGVtaXQ6IChldmVudDogUm91dGVyRXZlbnQpID0+IHZvaWQ7XG4gICAgICAgICAgICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gICAgICAgICAgICBsb2NhdGlvbjogUm91dGVyTG9jYXRpb25TbmFwc2hvdDtcbiAgICAgICAgICB9XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG1hdGNoZXMgIT0gbnVsbCkge1xuICAgICAgICBpbnN0cnVtZW50YXRpb24gPSB7XG4gICAgICAgICAgZW1pdDogKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgZW1pdEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNvdXJjZTogbm9ybWFsaXplZC5zb3VyY2UsXG4gICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uU25hcHNob3QsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwcmVsb2FkQ29udGV4dCA9IHJlc29sdmVDb250ZXh0KCk7XG4gICAgICBjb25zdCBwcmVsb2FkUXVlcnlTY2hlbWEgPSByZWFkQWN0aXZlUXVlcnlTY2hlbWEobWF0Y2hlcyk7XG4gICAgICBjb25zdCBwcmVsb2FkU2VhcmNoU3RhdGUgPSBwYXJzZVNlYXJjaFN0YXRlKFxuICAgICAgICBub3JtYWxpemVkLnNlYXJjaCxcbiAgICAgICAgcHJlbG9hZFF1ZXJ5U2NoZW1hLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHByZXBhcmVkTWF0Y2ggPSBwcmVwYXJlTWF0Y2goXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGJ1aWxkUHJlcGFyZVF1ZXJ5SW5wdXQocHJlbG9hZFNlYXJjaFN0YXRlLCBwcmVsb2FkUXVlcnlTY2hlbWEpLFxuICAgICAgICBpbnN0cnVtZW50YXRpb24sXG4gICAgICAgIHByZWxvYWRDb250ZXh0LFxuICAgICAgKTtcbiAgICAgIHByZXBhcmVkTWF0Y2guc2VnbWVudHMuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICAgICAgaWYgKHJvdXRlLnByZXBhcmVkUmVzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICByb3V0ZS5wcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBzdWJzY3JpYmUoY2FsbGJhY2spIHtcbiAgICAgIG5leHRJZCArPSAxO1xuICAgICAgY29uc3QgaWQgPSBuZXh0SWQ7XG4gICAgICAvKiogUmVtb3ZlcyB0aGUgc3Vic2NyaWJlciBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgdmlhIHN1YnNjcmliZS4gKi9cbiAgICAgIGZ1bmN0aW9uIGRpc3Bvc2VDYWxsYmFjaygpIHtcbiAgICAgICAgc3Vic2NyaWJlcnMuZGVsZXRlKGlkKTtcbiAgICAgIH1cbiAgICAgIHN1YnNjcmliZXJzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuIGRpc3Bvc2VDYWxsYmFjaztcbiAgICB9LFxuICAgIG5hdmlnYXRlKHtcbiAgICAgIHBhdGhuYW1lLFxuICAgICAgcXVlcnksXG4gICAgICBmaWx0ZXJzOiBuYXZGaWx0ZXJzLFxuICAgICAgcmVwbGFjZSxcbiAgICB9OiB7XG4gICAgICBwYXRobmFtZT86IHN0cmluZztcbiAgICAgIHF1ZXJ5PzogVW5rbm93blF1ZXJ5U2hhcGU7XG4gICAgICBmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnM7XG4gICAgICByZXBsYWNlPzogYm9vbGVhbjtcbiAgICB9KSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gY3VycmVudEVudHJ5O1xuICAgICAgbGV0IHRhcmdldFBhdGhuYW1lID0gcGF0aG5hbWU7XG4gICAgICB0YXJnZXRQYXRobmFtZSA/Pz0gY3VycmVudC5sb2NhdGlvbi5wYXRobmFtZTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25Sb3V0ZSA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCB7XG4gICAgICAgIC4uLmhpc3RvcnkubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lOiB0YXJnZXRQYXRobmFtZSxcbiAgICAgIH0pO1xuICAgICAgbGV0IGRlc3RTY2hlbWEgPSByZWFkQWN0aXZlUXVlcnlTY2hlbWEoZGVzdGluYXRpb25Sb3V0ZSk7XG4gICAgICBkZXN0U2NoZW1hID0gZGVzdFNjaGVtYSA/PyBjdXJyZW50LmFjdGl2ZVF1ZXJ5U2NoZW1hO1xuXG4gICAgICBjb25zdCBoYXNTY2hlbWEgPSBkZXN0U2NoZW1hICE9IG51bGw7XG4gICAgICBjb25zdCB1c2VRdWVyeUFzRmlsdGVycyA9XG4gICAgICAgIG5hdkZpbHRlcnMgPT0gbnVsbCAmJlxuICAgICAgICBoYXNTY2hlbWEgJiZcbiAgICAgICAgcXVlcnkgIT0gbnVsbCAmJlxuICAgICAgICBsb29rc0xpa2VGaWx0ZXJzKHF1ZXJ5KTtcbiAgICAgIGxldCBmaWx0ZXJzSW5wdXQgPSBuYXZGaWx0ZXJzO1xuICAgICAgaWYgKGZpbHRlcnNJbnB1dCA9PSBudWxsKSB7XG4gICAgICAgIGlmICh1c2VRdWVyeUFzRmlsdGVycykge1xuICAgICAgICAgIGZpbHRlcnNJbnB1dCA9IHF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlcnNJbnB1dCA9IGN1cnJlbnQuZmlsdGVycztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IHJhd1F1ZXJ5SW5wdXQ6IFVua25vd25RdWVyeVNoYXBlIHwgUmF3UXVlcnkgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodXNlUXVlcnlBc0ZpbHRlcnMpIHtcbiAgICAgICAgcmF3UXVlcnlJbnB1dCA9IGN1cnJlbnQucXVlcnk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYXdRdWVyeUlucHV0ID0gcXVlcnkgPz8gY3VycmVudC5xdWVyeTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNlYXJjaCA9IGJ1aWxkQ29tYmluZWRTZWFyY2goe1xuICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzSW5wdXQsXG4gICAgICAgIHF1ZXJ5OiByYXdRdWVyeUlucHV0LFxuICAgICAgICBxdWVyeVNjaGVtYTogZGVzdFNjaGVtYSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbG9jYXRpb25PYmogPSB7IHBhdGhuYW1lOiB0YXJnZXRQYXRobmFtZSwgc2VhcmNoLCBoYXNoOiAnJyB9O1xuICAgICAgY29uc3Qgb3JpZ2luOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlID0gJ3Byb2dyYW1tYXRpYyc7XG4gICAgICBjb25zdCBkZWJ1Z0NvbnRleHQ6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgdHJpZ2dlcjogJ3Byb2dyYW1tYXRpYycsXG4gICAgICB9O1xuXG4gICAgICBpZiAocmVwbGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgICBlbWl0SGlzdG9yeUV2ZW50KCdyZXBsYWNlJywgb3JpZ2luLCBsb2NhdGlvbk9iaiwge1xuICAgICAgICAgIHRyaWdnZXI6ICdwcm9ncmFtbWF0aWMnLFxuICAgICAgICB9KTtcbiAgICAgICAgaGlzdG9yeS5zZXQoe1xuICAgICAgICAgIC4uLmxvY2F0aW9uT2JqLFxuICAgICAgICAgIGRlYnVnQ29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbWl0SGlzdG9yeUV2ZW50KCdwdXNoJywgb3JpZ2luLCBsb2NhdGlvbk9iaiwge1xuICAgICAgICAgIHRyaWdnZXI6ICdwcm9ncmFtbWF0aWMnLFxuICAgICAgICB9KTtcbiAgICAgICAgaGlzdG9yeS5wdXNoKHtcbiAgICAgICAgICAuLi5sb2NhdGlvbk9iaixcbiAgICAgICAgICBkZWJ1Z0NvbnRleHQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0UHJlcGFyZWQsXG4gICAgZ2V0UHJlcGFyZWRTZWdtZW50cyxcbiAgfSBhcyBDcmVhdGVSb3V0ZXJSZXR1cm48VENvbnRleHQsIFI+Wydjb250ZXh0J107XG5cbiAgLyoqIFJlbGVhc2VzIHJvdXRlciByZXNvdXJjZXMgYW5kIGRldGFjaGVzIGFsbCBpbnN0cnVtZW50YXRpb25zLiAqL1xuICBmdW5jdGlvbiBjbGVhbnVwKCk6IHZvaWQge1xuICAgIGlmIChyb3V0ZXJEaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByb3V0ZXJEaXNwb3NlZCA9IHRydWU7XG4gICAgZGlzcG9zZUhpc3RvcnkoKTtcbiAgICBoaXN0b3J5LmRpc3Bvc2UoKTtcbiAgICBzdWJzY3JpYmVycy5jbGVhcigpO1xuICAgIHJlZ2lzdHJ5LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8vIFJldHVybiBib3RoIHRoZSBjb250ZXh0IG9iamVjdCBhbmQgYSBjbGVhbnVwIGZ1bmN0aW9uXG4gIHJldHVybiB7IGNvbnRleHQsIGNsZWFudXAgfTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAE1B,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AASF,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAKD,iBAAS,gBAAgB,CACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAaR;AAED,eAAO,MAAM,WAAW;;CAEd,CAAC;AAUX,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CA2IlC;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,GAAG,OAAO,EAElB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CA6BnD;AAOD,wBAAgB,CAAC,CACf,QAAQ,GAAG,OAAO,EAClB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,SAAS,SAAS,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GAAG,SAAS,GAC3D,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GACjC,SAAS,EAEb,KAAK,EAAE,KAAK,CACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,GACA,KAAK,CACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,CAEA"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAE1B,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAwBF,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAKD,iBAAS,gBAAgB,CACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAaR;AAED,eAAO,MAAM,WAAW;;CAEd,CAAC;AAUX,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CA2IlC;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,GAAG,OAAO,EAElB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CA6BnD;AAOD,wBAAgB,CAAC,CACf,QAAQ,GAAG,OAAO,EAClB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,SAAS,SAAS,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GAAG,SAAS,GAC3D,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GACjC,SAAS,EAEb,KAAK,EAAE,KAAK,CACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,GACA,KAAK,CACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,CAEA"}
package/lib/esm/tools.js CHANGED
@@ -1,4 +1,14 @@
1
1
  import { createPreparedValueResource } from './prepareResource.js';
2
+ function emitPrepareInstrumentation(instrumentation, event) {
3
+ if (instrumentation == null) {
4
+ return;
5
+ }
6
+ try {
7
+ instrumentation.emit(event);
8
+ }
9
+ catch {
10
+ }
11
+ }
2
12
  export function getMatchedRoute(routes, location) {
3
13
  for (const route of routes) {
4
14
  const match = route.matchFunction(location.pathname);
@@ -53,7 +63,7 @@ export function prepareMatch(match, query, instrumentation, context) {
53
63
  let prepareStartedAt = 0;
54
64
  if (instrumentation != null) {
55
65
  prepareStartedAt = Date.now();
56
- instrumentation.emit({
66
+ emitPrepareInstrumentation(instrumentation, {
57
67
  kind: 'prepare-start',
58
68
  source: instrumentation.source,
59
69
  timestamp: prepareStartedAt,
@@ -79,7 +89,7 @@ export function prepareMatch(match, query, instrumentation, context) {
79
89
  preparedLoad
80
90
  .then(() => {
81
91
  const finishedAt = Date.now();
82
- instrumentation.emit({
92
+ emitPrepareInstrumentation(instrumentation, {
83
93
  kind: 'prepare-complete',
84
94
  source: instrumentation.source,
85
95
  timestamp: finishedAt,
@@ -93,7 +103,7 @@ export function prepareMatch(match, query, instrumentation, context) {
93
103
  })
94
104
  .catch(() => {
95
105
  const finishedAt = Date.now();
96
- instrumentation.emit({
106
+ emitPrepareInstrumentation(instrumentation, {
97
107
  kind: 'prepare-complete',
98
108
  source: instrumentation.source,
99
109
  timestamp: finishedAt,
@@ -113,7 +123,7 @@ export function prepareMatch(match, query, instrumentation, context) {
113
123
  }
114
124
  if (instrumentation != null && prepare == null) {
115
125
  const finishedAt = Date.now();
116
- instrumentation.emit({
126
+ emitPrepareInstrumentation(instrumentation, {
117
127
  kind: 'prepare-complete',
118
128
  source: instrumentation.source,
119
129
  timestamp: finishedAt,
@@ -179,4 +189,4 @@ export async function prepareMatchAsync(match, query, instrumentation, context)
179
189
  export function r(route) {
180
190
  return route;
181
191
  }
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBZW5FLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBS0QsU0FBUyxnQkFBZ0IsQ0FDdkIsU0FBNkIsRUFDN0IsS0FBYSxFQUNiLFFBQWlCO0lBRWpCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxD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LE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsUUFBUTtZQUNSLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQztJQUNKLENBQUMsQ0FDRixDQUNGLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1FBQzFCLFFBQVE7UUFDUixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQU9ELE1BQU0sVUFBVSxDQUFDLENBU2YsS0FPQztJQVNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQge1xuICB0eXBlIEZpbHRlclNjaGVtYSxcbiAgdHlwZSBQcmVwYXJlUmVzdWx0LFxuICB0eXBlIFByZXBhcmVkTWF0Y2gsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaFJvdXRlLFxuICB0eXBlIFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJlZGlyZWN0LFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJvdXRlLFxuICB0eXBlIFJvdXRlTm9kZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBieSBleGVjdXRpbmcgYHByZXBhcmVgIGNhbGxiYWNrcyBhbmQgcmVzb2x2aW5nIHJlc291cmNlIHBhZ2VzLlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHJvdXRlciBjb250ZXh0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIFByZXBhcmVkIGhpZXJhcmNoeSByZWFkeSBmb3IgdGhlIHJlbmRlcmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU1hdGNoPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcmVwYXJlZE1hdGNoPFRQYXJhbXMsIFRDb250ZXh0PiB7XG4gIC8vIE5PVEU6IFJ1bnRpbWUgcmV0YWlucyBhIGdlbmVyaWMgUHJlcGFyZWRSZXN1bHQ7IHR5cGUtbGV2ZWwgbmFycm93aW5nIGlzIGFjaGlldmVkIGV4dGVybmFsbHlcbiAgLy8gdGhyb3VnaCB0aGUgcm91dGUgdW5pb24gYW5kIFByZXBhcmVkQWNjZXNzIGhlbHBlcnMuIFdlIGludGVudGlvbmFsbHkgYXZvaWQgaW5qZWN0aW5nXG4gIC8vIGdlbmVyaWMgcGFyYW1ldGVycyBoZXJlIHRvIGtlZXAgcnVudGltZSBsaWdodHdlaWdodCB3aGlsZSBzdGlsbCBlbmFibGluZyBjb21waWxlLXRpbWVcbiAgLy8gZGlzY3JpbWluYXRpb24gaW4gdXNlcmxhbmQgdmlhIGNyZWF0ZVJvdXRlciBnZW5lcmljcy5cbiAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2gsXG4gICAgICBzZWdtZW50czogW10sXG4gICAgICByb3V0ZXM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBtYXRjaGVkUm91dGUgPSBtYXRjaC5yb3V0ZTtcblxuICBjb25zdCBzZWdtZW50czogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+W10gPSBtYXRjaC5yb3V0ZS5yb3V0ZXMubWFwKFxuICAgIChyb3V0ZSwgcm91dGVJbmRleCkgPT4ge1xuICAgICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCBxdWVyeVNjaGVtYSwgcmVzb3VyY2VQYWdlLCByZW5kZXIgfSA9IHJvdXRlO1xuICAgICAgbGV0IG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc291cmNlUGFnZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vZHVsZUlkID0gcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkKCk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRNb2R1bGVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtb2R1bGVJZCA9IHJlc29sdmVkTW9kdWxlSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHByZXBhcmVTdGFydGVkQXQgPSAwO1xuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVTdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBpbnN0cnVtZW50YXRpb24uZW1pdCh7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtc3RhcnQnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJlcGFyZWRSZXNvdXJjZTogUHJlcGFyZWRNYXRjaFJvdXRlWydwcmVwYXJlZFJlc291cmNlJ107XG4gICAgICBpZiAocHJlcGFyZSAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UgPSBjcmVhdGVQcmVwYXJlZFZhbHVlUmVzb3VyY2UoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmVwYXJlKHtcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlZFJvdXRlLFxuICAgICAgICAgICAgY29udGV4dDogY29udGV4dCBhcyBUQ29udGV4dCxcbiAgICAgICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgICAgIC8vIEZpeCBPYmplY3QuY3JlYXRlKG51bGwpIGlzc3VlIGluIHBhdGgtdG8tcmVnZXhwXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHsgLi4ubWF0Y2gucGFyYW1zIH0sXG4gICAgICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBFYWdlcmx5IGV2YWx1YXRlIHByZXBhcmUgc28gdGhlIHByZXBhcmVkIHJlc291cmNlIGltbWVkaWF0ZWx5IHJlZmxlY3RzXG4gICAgICAgIC8vIHN5bmMgcmVzb2x1dGlvbiBvciBhc3luYyBwZW5kaW5nIHN0YXRlIGZvciB0aGUgY3VycmVudCByb3V0ZSBzbmFwc2hvdC5cbiAgICAgICAgY29uc3QgcHJlcGFyZWRMb2FkID0gcHJlcGFyZWRSZXNvdXJjZS5sb2FkKCk7XG5cbiAgICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWRMb2FkXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uZW1pdCh7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmVtaXQoe1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3JlamVjdGVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWQuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsICYmIHByZXBhcmUgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmVtaXQoe1xuICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgIGhhc1ByZXBhcmVkOiBmYWxzZSxcbiAgICAgICAgICBzdGF0dXM6ICdyZXNvbHZlZCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwgJiYgcmVzb3VyY2VQYWdlLmdldCgpID09IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUocmVzb3VyY2VQYWdlLmxvYWQoKSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZDogcm91dGUgcmVuZGVyaW5nL2Vycm9yIGJvdW5kYXJpZXMgb3duIHRoZSBmYWlsdXJlLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoLFxuICAgICAgICBmdWxsUGF0aDogcGF0aCxcbiAgICAgICAgc2VnbWVudEluZGV4OiByb3V0ZUluZGV4LFxuICAgICAgICBwcmVwYXJlZFJlc291cmNlLFxuICAgICAgICByZWRpcmVjdFRvOiBtYXRjaGVkUm91dGUucmVkaXJlY3RUbyA/PyBudWxsLFxuICAgICAgICByZW5kZXIsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgaGlnaGxpZ2h0SWQ6IGJ1aWxkSGlnaGxpZ2h0SWQocGF0aCwgcm91dGVJbmRleCwgbW9kdWxlSWQpLFxuICAgICAgICBxdWVyeVNjaGVtYSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHNlZ21lbnRzLFxuICAgIHJvdXRlczogc2VnbWVudHMsXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgZXZlcnkgYXN5bmMgcHJlcGFyZSByZXNvdXJjZSBmb3IgYSBtYXRjaGVkIHJvdXRlIGhpZXJhcmNoeS5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBNYXRjaGVkIHJvdXRlIGRlc2NyaXB0b3IgKG9yIGBudWxsYCB3aGVuIG5vdGhpbmcgbWF0Y2hlZCkuXG4gKiBAcGFyYW0gcXVlcnkgLSBPcHRpb25hbCBxdWVyeSBvYmplY3QgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHBhcmFtIGluc3RydW1lbnRhdGlvbiAtIE9wdGlvbmFsIGluc3RydW1lbnRhdGlvbiBzaW5rIGZvciBwcmVwYXJlIGxpZmVjeWNsZSBldmVudHMuXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHJvdXRlciBjb250ZXh0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIFByZXBhcmVkIGhpZXJhcmNoeSB3aXRoIGNvbmNyZXRlIHByZXBhcmVkIHZhbHVlcyBpbnN0ZWFkIG9mIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXBhcmVNYXRjaEFzeW5jPFxuICBUUGFyYW1zIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+KFxuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRQYXJhbXM+IHwgbnVsbCxcbiAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgaW5zdHJ1bWVudGF0aW9uPzogUHJlcGFyZUluc3RydW1lbnRhdGlvbixcbiAgY29udGV4dD86IFRDb250ZXh0LFxuKTogUHJvbWlzZTxSZXNvbHZlZFByZXBhcmVkTWF0Y2g8VFBhcmFtcywgVENvbnRleHQ+PiB7XG4gIGNvbnN0IHByZXBhcmVkTWF0Y2ggPSBwcmVwYXJlTWF0Y2gobWF0Y2gsIHF1ZXJ5LCBpbnN0cnVtZW50YXRpb24sIGNvbnRleHQpO1xuICBjb25zdCBzZWdtZW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHByZXBhcmVkTWF0Y2guc2VnbWVudHMubWFwKFxuICAgICAgYXN5bmMgKHJvdXRlKTogUHJvbWlzZTxSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0Pj4gPT4ge1xuICAgICAgICBsZXQgcHJlcGFyZWQ6IHVua25vd247XG4gICAgICAgIGlmIChyb3V0ZS5wcmVwYXJlZFJlc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICBwcmVwYXJlZCA9IGF3YWl0IHJvdXRlLnByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgICBmdWxsUGF0aDogcm91dGUuZnVsbFBhdGgsXG4gICAgICAgICAgc2VnbWVudEluZGV4OiByb3V0ZS5zZWdtZW50SW5kZXgsXG4gICAgICAgICAgcHJlcGFyZWQsXG4gICAgICAgICAgcmVkaXJlY3RUbzogcm91dGUucmVkaXJlY3RUbyxcbiAgICAgICAgICByZW5kZXI6IHJvdXRlLnJlbmRlcixcbiAgICAgICAgICByZXNvdXJjZVBhZ2U6IHJvdXRlLnJlc291cmNlUGFnZSxcbiAgICAgICAgICBoaWdobGlnaHRJZDogcm91dGUuaGlnaGxpZ2h0SWQsXG4gICAgICAgICAgcXVlcnlTY2hlbWE6IHJvdXRlLnF1ZXJ5U2NoZW1hLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2g6IHByZXBhcmVkTWF0Y2gubWF0Y2gsXG4gICAgc2VnbWVudHMsXG4gICAgcm91dGVzOiBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSb3V0ZSBoZWxwZXIgdGhhdCBwcmVzZXJ2ZXMgVHlwZVNjcmlwdCBpbmZlcmVuY2UgKGluY2x1ZGluZyBjb25kaXRpb25hbCBxdWVyeS1zY2hlbWEgaW5mZXJlbmNlKS5cbiAqXG4gKiBAcGFyYW0gcm91dGUgLSBSb3V0ZSBkZWZpbml0aW9uIHRvIHJldHVybiB1bmNoYW5nZWQgd2l0aCBpbmZlcnJlZCBnZW5lcmljcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHI8XG4gIFRDb250ZXh0ID0gdW5rbm93bixcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCA9IFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFRDaGlsZHJlbiBleHRlbmRzIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCA9XG4gICAgfCByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW11cbiAgICB8IHVuZGVmaW5lZCxcbj4oXG4gIHJvdXRlOiBSb3V0ZTxcbiAgICBUQ29udGV4dCxcbiAgICBUUHJlcGFyZWQsXG4gICAgVFZhcmlhYmxlcyxcbiAgICBUUXVlcnksXG4gICAgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgIFRDaGlsZHJlblxuICA+LFxuKTogUm91dGU8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQsXG4gIFRWYXJpYWJsZXMsXG4gIFRRdWVyeSxcbiAgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBUQ2hpbGRyZW5cbj4ge1xuICByZXR1cm4gcm91dGU7XG59XG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBU25FLFNBQVMsMEJBQTBCLENBQ2pDLGVBQW1ELEVBQ25ELEtBQXlCO0lBRXpCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzVCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUMsTUFBTSxDQUFDO0lBRVQsQ0FBQztBQUNILENBQUM7QUFTRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixNQUE0QixFQUM1QixRQUFrQjtJQUVsQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQy9CLE9BQU87Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLElBQUk7Z0JBQ0osTUFBTTthQUNQLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUtELFNBQVMsZ0JBQWdCLENBQ3ZCLFNBQTZCLEVBQzdCLEtBQWEsRUFDYixRQUFpQjtJQUVqQixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxRQUFRLEVBQUUs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QUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNoQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDeEIsS0FBSyxFQUFFLEtBQUssRUFBbUQsRUFBRTtRQUMvRCxJQUFJLFFBQWlCLENBQUM7UUFDdEIsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsUUFBUTtZQUNSLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQztJQUNKLENBQUMsQ0FDRixDQUNGLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1FBQzFCLFFBQVE7UUFDUixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQU9ELE1BQU0sVUFBVSxDQUFDLENBU2YsS0FPQztJQVNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQge1xuICB0eXBlIEZpbHRlclNjaGVtYSxcbiAgdHlwZSBQcmVwYXJlUmVzdWx0LFxuICB0eXBlIFByZXBhcmVkTWF0Y2gsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaFJvdXRlLFxuICB0eXBlIFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJlZGlyZWN0LFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJvdXRlLFxuICB0eXBlIFJvdXRlTm9kZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxuLyoqIEVtaXRzIHByZXBhcmUgaW5zdHJ1bWVudGF0aW9uIHdpdGhvdXQgYWxsb3dpbmcgaW5zdHJ1bWVudGF0aW9uIGZhaWx1cmVzIHRvIGFmZmVjdCByb3V0aW5nLiAqL1xuZnVuY3Rpb24gZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oXG4gIGluc3RydW1lbnRhdGlvbjogUHJlcGFyZUluc3RydW1lbnRhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCxcbik6IHZvaWQge1xuICBpZiAoaW5zdHJ1bWVudGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbnN0cnVtZW50YXRpb24uZW1pdChldmVudCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluc3RydW1lbnRhdGlvbiBtdXN0IG5ldmVyIGJyZWFrIHJvdXRpbmcgb3IgcHJlcGFyZSBsaWZlY3ljbGUuXG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBieSBleGVjdXRpbmcgYHByZXBhcmVgIGNhbGxiYWNrcyBhbmQgcmVzb2x2aW5nIHJlc291cmNlIHBhZ2VzLlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHJvdXRlciBjb250ZXh0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIFByZXBhcmVkIGhpZXJhcmNoeSByZWFkeSBmb3IgdGhlIHJlbmRlcmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU1hdGNoPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcmVwYXJlZE1hdGNoPFRQYXJhbXMsIFRDb250ZXh0PiB7XG4gIC8vIE5PVEU6IFJ1bnRpbWUgcmV0YWlucyBhIGdlbmVyaWMgUHJlcGFyZWRSZXN1bHQ7IHR5cGUtbGV2ZWwgbmFycm93aW5nIGlzIGFjaGlldmVkIGV4dGVybmFsbHlcbiAgLy8gdGhyb3VnaCB0aGUgcm91dGUgdW5pb24gYW5kIFByZXBhcmVkQWNjZXNzIGhlbHBlcnMuIFdlIGludGVudGlvbmFsbHkgYXZvaWQgaW5qZWN0aW5nXG4gIC8vIGdlbmVyaWMgcGFyYW1ldGVycyBoZXJlIHRvIGtlZXAgcnVudGltZSBsaWdodHdlaWdodCB3aGlsZSBzdGlsbCBlbmFibGluZyBjb21waWxlLXRpbWVcbiAgLy8gZGlzY3JpbWluYXRpb24gaW4gdXNlcmxhbmQgdmlhIGNyZWF0ZVJvdXRlciBnZW5lcmljcy5cbiAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2gsXG4gICAgICBzZWdtZW50czogW10sXG4gICAgICByb3V0ZXM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBtYXRjaGVkUm91dGUgPSBtYXRjaC5yb3V0ZTtcblxuICBjb25zdCBzZWdtZW50czogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+W10gPSBtYXRjaC5yb3V0ZS5yb3V0ZXMubWFwKFxuICAgIChyb3V0ZSwgcm91dGVJbmRleCkgPT4ge1xuICAgICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCBxdWVyeVNjaGVtYSwgcmVzb3VyY2VQYWdlLCByZW5kZXIgfSA9IHJvdXRlO1xuICAgICAgbGV0IG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc291cmNlUGFnZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vZHVsZUlkID0gcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkKCk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRNb2R1bGVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtb2R1bGVJZCA9IHJlc29sdmVkTW9kdWxlSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHByZXBhcmVTdGFydGVkQXQgPSAwO1xuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVTdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1zdGFydCcsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVwYXJlZFJlc291cmNlOiBQcmVwYXJlZE1hdGNoUm91dGVbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZSA9IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmUoe1xuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0IGFzIFRDb250ZXh0LFxuICAgICAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyB7fSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEVhZ2VybHkgZXZhbHVhdGUgcHJlcGFyZSBzbyB0aGUgcHJlcGFyZWQgcmVzb3VyY2UgaW1tZWRpYXRlbHkgcmVmbGVjdHNcbiAgICAgICAgLy8gc3luYyByZXNvbHV0aW9uIG9yIGFzeW5jIHBlbmRpbmcgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHJvdXRlIHNuYXBzaG90LlxuICAgICAgICBjb25zdCBwcmVwYXJlZExvYWQgPSBwcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcblxuICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWRcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3JlamVjdGVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWQuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsICYmIHByZXBhcmUgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgaGFzUHJlcGFyZWQ6IGZhbHNlLFxuICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZVBhZ2UgIT0gbnVsbCAmJiByZXNvdXJjZVBhZ2UuZ2V0KCkgPT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXNvdXJjZVBhZ2UubG9hZCgpKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZ1bGxQYXRoOiBwYXRoLFxuICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlSW5kZXgsXG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgIHJlZGlyZWN0VG86IG1hdGNoZWRSb3V0ZS5yZWRpcmVjdFRvID8/IG51bGwsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICBoaWdobGlnaHRJZDogYnVpbGRIaWdobGlnaHRJZChwYXRoLCByb3V0ZUluZGV4LCBtb2R1bGVJZCksXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2gsXG4gICAgc2VnbWVudHMsXG4gICAgcm91dGVzOiBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBldmVyeSBhc3luYyBwcmVwYXJlIHJlc291cmNlIGZvciBhIG1hdGNoZWQgcm91dGUgaGllcmFyY2h5LlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gaW5zdHJ1bWVudGF0aW9uIC0gT3B0aW9uYWwgaW5zdHJ1bWVudGF0aW9uIHNpbmsgZm9yIHByZXBhcmUgbGlmZWN5Y2xlIGV2ZW50cy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHdpdGggY29uY3JldGUgcHJlcGFyZWQgdmFsdWVzIGluc3RlYWQgb2YgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZU1hdGNoQXN5bmM8XG4gIFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcm9taXNlPFJlc29sdmVkUHJlcGFyZWRNYXRjaDxUUGFyYW1zLCBUQ29udGV4dD4+IHtcbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChtYXRjaCwgcXVlcnksIGluc3RydW1lbnRhdGlvbiwgY29udGV4dCk7XG4gIGNvbnN0IHNlZ21lbnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoXG4gICAgICBhc3luYyAocm91dGUpOiBQcm9taXNlPFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+PiA9PiB7XG4gICAgICAgIGxldCBwcmVwYXJlZDogdW5rbm93bjtcbiAgICAgICAgaWYgKHJvdXRlLnByZXBhcmVkUmVzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICAgIHByZXBhcmVkID0gYXdhaXQgcm91dGUucHJlcGFyZWRSZXNvdXJjZS5sb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgICAgIGZ1bGxQYXRoOiByb3V0ZS5mdWxsUGF0aCxcbiAgICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlLnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlZCxcbiAgICAgICAgICByZWRpcmVjdFRvOiByb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlbmRlcjogcm91dGUucmVuZGVyLFxuICAgICAgICAgIHJlc291cmNlUGFnZTogcm91dGUucmVzb3VyY2VQYWdlLFxuICAgICAgICAgIGhpZ2hsaWdodElkOiByb3V0ZS5oaWdobGlnaHRJZCxcbiAgICAgICAgICBxdWVyeVNjaGVtYTogcm91dGUucXVlcnlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaDogcHJlcGFyZWRNYXRjaC5tYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgICByb3V0ZXM6IHNlZ21lbnRzLFxuICB9O1xufVxuXG4vKipcbiAqIFJvdXRlIGhlbHBlciB0aGF0IHByZXNlcnZlcyBUeXBlU2NyaXB0IGluZmVyZW5jZSAoaW5jbHVkaW5nIGNvbmRpdGlvbmFsIHF1ZXJ5LXNjaGVtYSBpbmZlcmVuY2UpLlxuICpcbiAqIEBwYXJhbSByb3V0ZSAtIFJvdXRlIGRlZmluaXRpb24gdG8gcmV0dXJuIHVuY2hhbmdlZCB3aXRoIGluZmVycmVkIGdlbmVyaWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVENoaWxkcmVuIGV4dGVuZHMgcmVhZG9ubHkgKFJvdXRlTm9kZSB8IFJlZGlyZWN0KVtdIHwgdW5kZWZpbmVkID1cbiAgICB8IHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXVxuICAgIHwgdW5kZWZpbmVkLFxuPihcbiAgcm91dGU6IFJvdXRlPFxuICAgIFRDb250ZXh0LFxuICAgIFRQcmVwYXJlZCxcbiAgICBUVmFyaWFibGVzLFxuICAgIFRRdWVyeSxcbiAgICBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgVENoaWxkcmVuXG4gID4sXG4pOiBSb3V0ZTxcbiAgVENvbnRleHQsXG4gIFRQcmVwYXJlZCxcbiAgVFZhcmlhYmxlcyxcbiAgVFF1ZXJ5LFxuICBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRDaGlsZHJlblxuPiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../filter-query/lib/errors.d.ts","../../filter-query/lib/values.d.ts","../../filter-query/lib/types.d.ts","../../filter-query/lib/schema.d.ts","../../filter-query/lib/parse.d.ts","../../filter-query/lib/stringify.d.ts","../../filter-query/lib/mutate.d.ts","../../filter-query/lib/index.d.ts","../../../node_modules/path-to-regexp/dist/index.d.ts","../src/builder.ts","../src/history/types.ts","../src/history/BrowserHistory.ts","../src/history/index.ts","../src/types.ts","../src/asyncResource.ts","../src/ResourcePage.tsx","../src/errors/HttpRedirect.ts","../src/errors/index.ts","../src/values.ts","../src/instrumentation/Instrumentation.ts","../src/prepareResource.ts","../src/tools.ts","../src/tools/query.ts","../src/tools/buildCombinedSearch.ts","../src/routing/createRouter.ts","../src/routing/createStaticRouter.ts","../src/tools/index.ts","../src/routing/RoutingContext.ts","../src/routing/Link.tsx","../src/routing/RouteComponent.tsx","../src/routing/RouteComponentWrapper.tsx","../src/routing/RouterRenderer.tsx","../src/routing/useQuery.ts","../src/routing/useLocation.ts","../src/routing/usePathname.ts","../src/routing/useNavigate.ts","../src/routing/useQueryState.ts","../src/routing/useFilters.ts","../src/routing/useFilterDiagnostics.ts","../src/routing/useSearchParams.ts","../src/routing/index.ts","../src/instrumentation/adapters/logger.ts","../src/instrumentation/adapters/devtoolsBridge.ts","../src/instrumentation/adapters/performanceTimeline.ts","../src/instrumentation/index.ts","../src/index.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@eslint/core/dist/cjs/types.d.cts","../../../node_modules/@eslint/plugin-kit/dist/cjs/types.cts","../../../node_modules/@eslint/plugin-kit/dist/cjs/index.d.cts","../../../node_modules/eslint/lib/types/index.d.ts","../src/eslint-rules/no-direct-window-location-search.ts","../src/eslint-rules/index.ts","../src/routing/useAllQuery.ts","../src/type-tests/query-infer.test-d.ts","../src/type-tests/routes-inference.test-d.ts","../src/type-tests/useFilters-typed.test-d.ts"],"fileIdsList":[[147],[148,149],[94,99,148],[96,97],[98],[146,148,150],[94],[100,101,102,103,104,105,106],[102],[100,101],[95,99,113,114],[95,99,113],[95,99,108,113],[95,99],[95,99,116],[95,99,152],[95,99,151],[95,99,110],[95,99,110,111],[95,99,109,112,113,115,117,118,121,140,144],[95,99,107,113,118],[95,99,119],[95,99,119,141,142,143],[95,98,99,112,123,126,127],[95,98,99,127],[95,98,99,108,113,117,120,127,129],[95,98,99,113,127,130],[95,98,99,113],[95,99,107,108,109,110,112,113,118,119,121,122,123],[95,99,107,108,109,113,121,122],[95,99,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139],[95,98,99,107,113,127],[95,98,99,133],[95,98,99,127,133],[95,99,108,109,113,119,120],[95,99,107],[95,99,107,113],[95,98,99,107,108,109,112,115]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"ef4a897cd2a3f91000c10264e400b3667c7e51e1b7365f03b62e8081dc53bde6","impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},"54e52fb5ec5001a17d5e14d779c15500ec4f365f49cabdfbd4ce9793b3a3e904","94668002320d84a836421804a1dda7f92b4dba23f36de3be219402d46c30a8d8","964308c5fde9a7540b2deb32ef2b7a79891f9dea9be5f7e78180214608b1b3ea","1290d3fb600632f90677ad16bc7b1bde59cc73be7685db582b11758fffeef575","68b8ecf4307dec18bce9d0ea0ed31644888bbe05a92233748368977476db383a","38e065cd1cf89f24ca3e9255043e783c9fcf79a41ba2a5cccd88a1da7fa547ba","4d7ebb3cbfa2bbb067c45417fbe3d21e4c7b91d16705063dd887dc5a493c83e5","8cb1389d48d2fd93e9e327de1f3278bf97a7f9b555d561af971ddc9388117db8",{"version":"5c6d56d510cd33bd645c0b1ee4de324ceadd9a4f3099098d03ac715c64e80196","impliedFormat":1},{"version":"1504ae5297205214c8ce9c0f7482a6398c266cf5ec8ca3a462f16ac2966fb389","signature":"de91e73b80479262064e7cf109b767536bfe6ead293da6342613518becd857c0"},{"version":"e2d128dd91e2fb8e514cac42cf4144376b8774328c0f600521fdd122523d1ca0","signature":"890bde5eb6ee0d20c7c61723eae63396eb7fe8a0630a914a564031c387a3352f"},{"version":"fe23a8de7c25ac64cfb56909cd23e0bf0bd3bf13bfc603544bec0a4f9cf422dd","signature":"02896792aa1e46204b0a1add421d8d8157122895f0c63f0e0a5b23af27df72b3"},{"version":"0cc1ddc825909f25fb4941445a851a7d522d8da1da2ad0336463b661ee75598e","signature":"f8566d1b55a463f6cc25aecbabf45a30c1c2fcb856d2f5478699d8dcb3ab4505"},{"version":"f6a974d3b93aee68a57925364486ca249a199c61c329d2571150ae7b74ac18bf","signature":"a725021cc4242a001016362b979f0429ddc2c6b8b3148c244fbacf3e2bc0409d"},{"version":"5b6e245ab9c7ae7872ec20783b63bb7d46fa39680cea25ee51e53ec0199a20b4","signature":"8fb37a8c98dc2d20094786f3d1cd417f2e122b831508356c9eb3ea4072a0931a"},{"version":"559af8862ff094d3c56213c3ed8b5fe5a3318a40fe8cf714f9b3fe1aa768267b","signature":"3867be073129b8c3ed56b300ae9b220ec56d575af3ae693e3a943831ddf8f2f7"},{"version":"85164013946de76ac1777a34e9ebf9bf65232e6d28cd845e9af572e7b79f1666","signature":"5b172e3d725b623ab6468b637581f2db08e790728ce20f362b9fbab56a357887"},{"version":"f720c0e58857db7fd7de845ff04b29c0ea05c9b1c99d392c40b9cd227d0e2bfd","signature":"6b8361e41359d55dba14b8a8733db8be49eb9d93f3501cecc8d47127f2aa8378"},{"version":"21eb168aa724b630e2378462bb68a57d1cfbbf54a255c68b481dba85de379be0","signature":"73a7af5bb2b472ac34b7534fb708883e7280a484320c0f34a3be6cef12537f1a"},{"version":"678f7cdbc78659f48a7cc11aef5c967002f0952f6e5a7f39ec596aefe2fe862c","signature":"7ecd837a9f6cc5de331f650517adfdff0f380980a4a98d3046c9d7b39aa48c88"},{"version":"8a86048ddfeff7326cb1b845fd705a1200c23388bf542a56a59bd79bca66b79d","signature":"609fb265f2d37a530e7dfc6324672854b5ac86707355eae0d1c34028b3c229bf"},{"version":"067779d8e7e7ddfe9df6c6cc5b5b5bfe7196661d6d963b6e6ce10a1b2d0a158a","signature":"2a298eb59948826d38241f18316dfc81b78bec2ace2046cb7dce024090228234"},{"version":"344948bd7f5e5c436a24d584af329f39187315ebc399ec5e626953bb2aee379e","signature":"aa8ad6e138e4101468144969d5251a198461355783279f786c9b0edba192c118"},{"version":"2f45dddc7741db293bc0fed0ac163490d204268198d8778af9012a7565c3547f","signature":"6790e1fd114d6f6eb608d6456d4fbfc9ab059dbae96754580642a2ff8c883ceb"},{"version":"27ce5be62d509fdb0083562a0f0a7e7455677d131bb02582b3f6fa2138707f02","signature":"deecba36a8584efc740a44d7ac329e3d49fb59ddbfe3c6b0965f49124cfd2a42"},{"version":"eff3a2a2b32c7a386d0ccb568ba58d099697936d2434a368df6ec3a8c91859e4","signature":"bcc10d66efb2dbebe083ed66af1be61422ce8ca32494a9a0735cbe043277c5fc"},{"version":"30c70a932e857d6010fbd8901841a7512c42b6d1c88785d0cd781085cb51e899","signature":"ffed7656dd37190aa68800c45ee24ecea30746efbc6d207cac39c775fe748b81"},{"version":"065cb3d380962978ce2bdf64cc175ec7a724999966ab57a5c3bc6a9bd0f0c21b","signature":"449c63ea2a662fb7331e4d243d64e58565ae827297a324196c59d3c51516c4b9"},{"version":"3ad5ab705778bb53944a678916fc403b87ed8fc38ec776fd9a9544cabf342546","signature":"ef82c8ae80fe83190041bf9a7f1542a60c18d25737711c0d9ecef2958eff47b8"},{"version":"bf9eb6fa9d9a3516e8fbc57bd3086140974409713067f41109299edbcc8974cf","signature":"7d3df7563ff56978dc84d3da938f95f0406f40cc55fb75d771200989b992494f"},{"version":"122fd61ff4487d90b3d0e5a415b6626d6cfeb4442d9e6cc9e0e79980878c0e32","signature":"978a450720483c5af953e11b49579e43562eb0d2dd9c2eee7f8df36ad904dcdd"},{"version":"ceec69038d1b04716ccd3d3d4c7e1c8b2ec5a1447627bb5bdbca596cb21d7db4","signature":"501586b075d7192d2e2151709579e660040cc0bec30b3514575780da469b2b3d"},{"version":"c46402f2298cf8f316ad352cb23e594dee5273b5ce1d6734197e8e088ead938a","signature":"02e327ac7d53a803938f215c72ea23d3c8ec66c1da92cb1589492c1228688eb1"},{"version":"3b743695fc734b286fa9edb53390bb67423e85eb75afb83f31e84fc2dfc653ba","signature":"8c104ecd6e898838aa1f31f769cd907e627253255a4d543c207a38570d89d667"},{"version":"9984cbaadfd50cb83c4cee85b59ac1089ffb499d9906c016a81a63071cf1a2a6","signature":"adba9ed7fd4ca2968ea5dff9ffac982fbf88e90e653a81bb85252b2c5cb7dcdb"},{"version":"3bbdf57d29c4e8a104dd3a35b207f6636ca7351d84e4d93dc4ba4e0ab9873153","signature":"61def873e232e9dbb3769d1a517754e8f2d0a0d5c61fd112167d7e7d7cdacaf6"},{"version":"e26741b10eb39009a15b0b58bff332989dfccf4f75fd9ba3ec1467e6fe3617e9","signature":"176419ef9e21af7704cac7d7489993d41ea63b172ce936fe212c1136b837a8d6"},{"version":"d4ee0a8bc9c6fd8efc948bbc39eb7416ccb943ccd9363313e72bac316236846b","signature":"ef41688b2d5a9c6022928eb4fef76b2211dcd7d1dbd89e031e382e48ba3a4a1a"},{"version":"8468cee1091bac0ea0a1157f2e10037048bd99c0b5b3c87de1a46b31c82d10ea","signature":"31ce6542e69674d86c18e9a85f9e93f0cf96c47ca1b45b102a45061f93ff2767"},{"version":"7f9766ee9fdfd789244c0396dd2028aee86139039d7e5d20423547c7f23dff2e","signature":"7f640e9b1e7de6623ed044baed87854b2fb50f31da1e24200233ee3100ec18c3"},{"version":"423bf36fea4557bc0771157675f91e9544866d117ac6ff6e7b7a5950333fe956","signature":"f68cc2b8963b05c256637a4f153bd0dde62ebd49584f4dd209c78e356a3e570f"},{"version":"fd953b525124872d6b43bd2843326f78d4d652f7ade9b48dd492a797af242edb","signature":"cef57ad2a305d4702e98738cd0b1aeaf6f7b5f481d38115e5eb8aad0a370e38e"},{"version":"ee070067b2e70309bc21eef6c05cc0334f965e07569e5566ae1a62de694ddfe5","signature":"aa22e51f6a1f33623796c986d3e352c173fadb784bbad5948117d82d023a8c3f"},{"version":"a2c959fa8e469c66da1f741bd33765772fe2042643c353467c7e826168998909","signature":"91a88ec75f4b67872db862233cfc67a6eeb0a614e035b622e7e63abd6ba6d488"},"94a1977d4fd33e5335fb01c3ae82a1d39fe7d7770214019a6dde6474e72a3710",{"version":"da086b18afecfb4e9d6e67280d766897f2c157972b04d24b4ffe42b3a65f3c34","signature":"523152b59eddc0a677f33e032492c181b70ba3b45111c03cf7d0be2391149ae9"},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"3671af8f58c05e9c83409ae56cb2a3db3c2e0a4cd082e685933d72f1c1a621ae","impliedFormat":1},{"version":"0f6d2591c6dbab10e42a87df2e9cfdf1673cb4001a03f32c75ad1a327329080a","impliedFormat":1},{"version":"37ecd7aa9e464b72ca1286207dc7567bff2214cd73e9da6bf9b5d3274707e210","impliedFormat":1},{"version":"ba3cb8eac8836e194aab59cc7bc6a622d2a0d4bd4041b97550d0d1a21e45fd41","impliedFormat":1},{"version":"9c1483bb321ef648c5956e587639102710d70a327b7b5faeacd9ebf7716bb6f5","signature":"eb65ef0c1e0a2b21d47a89224c1d0871e489a7e0a7aa521c28624c382e5f6938"},"a24cd480611160820022f8fcdb889be38696957861e0f6c473e1bc299cedf7a2",{"version":"ab18257c10e397a6a63df6497976d9c435b3fbe926138ea20bdf4e0d2b56a267","signature":"d9403a86606208464d02adc568c7b0531c937ea4a6d9e762919e905b9ed2dda3"},{"version":"05d5344fba0079c28fe5bda84b6a8200cb3ce8286be93bb50e92fb717a3cea2a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5d396ae26a0574be14ad0736a9da0df3aedab3627dec53bbb15515e5f165f4f0","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"version":"c2fba88eabbc27a0d7b03480bc2773217f3d675505ed210b10d4787f57e2a13c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[[109,145],[152,157]],"options":{"allowJs":true,"composite":true,"declaration":true,"declarationMap":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"jsx":4,"module":99,"noEmitHelpers":true,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./esm","removeComments":true,"rootDir":"../src","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":99},"referencedMap":[[148,1],[150,2],[149,3],[98,4],[99,5],[151,6],[95,7],[107,8],[106,9],[104,9],[103,9],[105,9],[102,10],[115,11],[114,12],[109,13],[116,14],[117,15],[153,16],[152,17],[111,18],[112,19],[110,14],[145,20],[119,21],[142,22],[141,22],[143,22],[144,23],[120,11],[128,24],[129,25],[130,26],[131,27],[127,28],[124,29],[125,30],[140,31],[154,25],[138,25],[137,32],[133,25],[135,25],[134,33],[132,25],[136,25],[139,34],[121,35],[123,36],[126,14],[122,14],[155,14],[157,37],[113,38],[118,14]],"latestChangedDtsFile":"./esm/type-tests/useFilters-typed.test-d.d.ts","version":"6.0.3"}
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../filter-query/lib/errors.d.ts","../../filter-query/lib/values.d.ts","../../filter-query/lib/types.d.ts","../../filter-query/lib/schema.d.ts","../../filter-query/lib/parse.d.ts","../../filter-query/lib/stringify.d.ts","../../filter-query/lib/mutate.d.ts","../../filter-query/lib/index.d.ts","../../../node_modules/path-to-regexp/dist/index.d.ts","../src/builder.ts","../src/history/types.ts","../src/history/BrowserHistory.ts","../src/history/index.ts","../src/types.ts","../src/asyncResource.ts","../src/ResourcePage.tsx","../src/errors/HttpRedirect.ts","../src/errors/index.ts","../src/values.ts","../src/instrumentation/Instrumentation.ts","../src/prepareResource.ts","../src/tools.ts","../src/tools/query.ts","../src/tools/buildCombinedSearch.ts","../src/routing/createRouter.ts","../src/routing/createStaticRouter.ts","../src/tools/index.ts","../src/routing/RoutingContext.ts","../src/routing/Link.tsx","../src/routing/RouteComponent.tsx","../src/routing/RouteComponentWrapper.tsx","../src/routing/RouterRenderer.tsx","../src/routing/useQuery.ts","../src/routing/useLocation.ts","../src/routing/usePathname.ts","../src/routing/useNavigate.ts","../src/routing/useQueryState.ts","../src/routing/useFilters.ts","../src/routing/useFilterDiagnostics.ts","../src/routing/useSearchParams.ts","../src/routing/index.ts","../src/instrumentation/adapters/logger.ts","../src/instrumentation/adapters/devtoolsBridge.ts","../src/instrumentation/adapters/performanceTimeline.ts","../src/instrumentation/index.ts","../src/index.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@eslint/core/dist/cjs/types.d.cts","../../../node_modules/@eslint/plugin-kit/dist/cjs/types.cts","../../../node_modules/@eslint/plugin-kit/dist/cjs/index.d.cts","../../../node_modules/eslint/lib/types/index.d.ts","../src/eslint-rules/no-direct-window-location-search.ts","../src/eslint-rules/index.ts","../src/routing/useAllQuery.ts","../src/type-tests/query-infer.test-d.ts","../src/type-tests/routes-inference.test-d.ts","../src/type-tests/useFilters-typed.test-d.ts"],"fileIdsList":[[147],[148,149],[94,99,148],[96,97],[98],[146,148,150],[94],[100,101,102,103,104,105,106],[102],[100,101],[95,99,113,114],[95,99,113],[95,99,108,113],[95,99],[95,99,116],[95,99,152],[95,99,151],[95,99,110],[95,99,110,111],[95,99,109,112,113,115,117,118,121,140,144],[95,99,107,113,118],[95,99,119],[95,99,119,141,142,143],[95,98,99,112,123,126,127],[95,98,99,127],[95,98,99,108,113,117,120,127,129],[95,98,99,113,127,130],[95,98,99,113],[95,99,107,108,109,110,112,113,118,119,121,122,123],[95,99,107,108,109,113,121,122],[95,99,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139],[95,98,99,107,113,127],[95,98,99,133],[95,98,99,127,133],[95,99,108,109,113,119,120],[95,99,107],[95,99,107,113],[95,98,99,107,108,109,112,115]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"ef4a897cd2a3f91000c10264e400b3667c7e51e1b7365f03b62e8081dc53bde6","impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},"54e52fb5ec5001a17d5e14d779c15500ec4f365f49cabdfbd4ce9793b3a3e904","94668002320d84a836421804a1dda7f92b4dba23f36de3be219402d46c30a8d8","964308c5fde9a7540b2deb32ef2b7a79891f9dea9be5f7e78180214608b1b3ea","1290d3fb600632f90677ad16bc7b1bde59cc73be7685db582b11758fffeef575","68b8ecf4307dec18bce9d0ea0ed31644888bbe05a92233748368977476db383a","38e065cd1cf89f24ca3e9255043e783c9fcf79a41ba2a5cccd88a1da7fa547ba","4d7ebb3cbfa2bbb067c45417fbe3d21e4c7b91d16705063dd887dc5a493c83e5","8cb1389d48d2fd93e9e327de1f3278bf97a7f9b555d561af971ddc9388117db8",{"version":"5c6d56d510cd33bd645c0b1ee4de324ceadd9a4f3099098d03ac715c64e80196","impliedFormat":1},{"version":"1504ae5297205214c8ce9c0f7482a6398c266cf5ec8ca3a462f16ac2966fb389","signature":"de91e73b80479262064e7cf109b767536bfe6ead293da6342613518becd857c0"},{"version":"e2d128dd91e2fb8e514cac42cf4144376b8774328c0f600521fdd122523d1ca0","signature":"890bde5eb6ee0d20c7c61723eae63396eb7fe8a0630a914a564031c387a3352f"},{"version":"4cf8f0fd75e658fb97934ea84a9597157cfc67d387278a14e6e8e97d5e8a87b4","signature":"4e56ceb61d63ecd04b462c2cdb9e4b876d0151e634e1eda8f92b775a01d4614d"},{"version":"0cc1ddc825909f25fb4941445a851a7d522d8da1da2ad0336463b661ee75598e","signature":"f8566d1b55a463f6cc25aecbabf45a30c1c2fcb856d2f5478699d8dcb3ab4505"},{"version":"f6a974d3b93aee68a57925364486ca249a199c61c329d2571150ae7b74ac18bf","signature":"a725021cc4242a001016362b979f0429ddc2c6b8b3148c244fbacf3e2bc0409d"},{"version":"5b6e245ab9c7ae7872ec20783b63bb7d46fa39680cea25ee51e53ec0199a20b4","signature":"8fb37a8c98dc2d20094786f3d1cd417f2e122b831508356c9eb3ea4072a0931a"},{"version":"559af8862ff094d3c56213c3ed8b5fe5a3318a40fe8cf714f9b3fe1aa768267b","signature":"3867be073129b8c3ed56b300ae9b220ec56d575af3ae693e3a943831ddf8f2f7"},{"version":"85164013946de76ac1777a34e9ebf9bf65232e6d28cd845e9af572e7b79f1666","signature":"5b172e3d725b623ab6468b637581f2db08e790728ce20f362b9fbab56a357887"},{"version":"f720c0e58857db7fd7de845ff04b29c0ea05c9b1c99d392c40b9cd227d0e2bfd","signature":"6b8361e41359d55dba14b8a8733db8be49eb9d93f3501cecc8d47127f2aa8378"},{"version":"21eb168aa724b630e2378462bb68a57d1cfbbf54a255c68b481dba85de379be0","signature":"73a7af5bb2b472ac34b7534fb708883e7280a484320c0f34a3be6cef12537f1a"},{"version":"678f7cdbc78659f48a7cc11aef5c967002f0952f6e5a7f39ec596aefe2fe862c","signature":"7ecd837a9f6cc5de331f650517adfdff0f380980a4a98d3046c9d7b39aa48c88"},{"version":"8a86048ddfeff7326cb1b845fd705a1200c23388bf542a56a59bd79bca66b79d","signature":"609fb265f2d37a530e7dfc6324672854b5ac86707355eae0d1c34028b3c229bf"},{"version":"89cd968724b957a66847075c7ebbaa17a964316f1ab2ca9dd36a5e9c34b2c77e","signature":"2a298eb59948826d38241f18316dfc81b78bec2ace2046cb7dce024090228234"},{"version":"344948bd7f5e5c436a24d584af329f39187315ebc399ec5e626953bb2aee379e","signature":"aa8ad6e138e4101468144969d5251a198461355783279f786c9b0edba192c118"},{"version":"2f45dddc7741db293bc0fed0ac163490d204268198d8778af9012a7565c3547f","signature":"6790e1fd114d6f6eb608d6456d4fbfc9ab059dbae96754580642a2ff8c883ceb"},{"version":"5e187eee2223313ebe25b41b08b6e6e2f2239c54942f20cb10b84d943ac63032","signature":"deecba36a8584efc740a44d7ac329e3d49fb59ddbfe3c6b0965f49124cfd2a42"},{"version":"eff3a2a2b32c7a386d0ccb568ba58d099697936d2434a368df6ec3a8c91859e4","signature":"bcc10d66efb2dbebe083ed66af1be61422ce8ca32494a9a0735cbe043277c5fc"},{"version":"30c70a932e857d6010fbd8901841a7512c42b6d1c88785d0cd781085cb51e899","signature":"ffed7656dd37190aa68800c45ee24ecea30746efbc6d207cac39c775fe748b81"},{"version":"065cb3d380962978ce2bdf64cc175ec7a724999966ab57a5c3bc6a9bd0f0c21b","signature":"449c63ea2a662fb7331e4d243d64e58565ae827297a324196c59d3c51516c4b9"},{"version":"3ad5ab705778bb53944a678916fc403b87ed8fc38ec776fd9a9544cabf342546","signature":"ef82c8ae80fe83190041bf9a7f1542a60c18d25737711c0d9ecef2958eff47b8"},{"version":"bf9eb6fa9d9a3516e8fbc57bd3086140974409713067f41109299edbcc8974cf","signature":"7d3df7563ff56978dc84d3da938f95f0406f40cc55fb75d771200989b992494f"},{"version":"122fd61ff4487d90b3d0e5a415b6626d6cfeb4442d9e6cc9e0e79980878c0e32","signature":"978a450720483c5af953e11b49579e43562eb0d2dd9c2eee7f8df36ad904dcdd"},{"version":"6c5f5bc6d746034fb8b7276463c0b870ca2de20e3436b58f57ebcf4329eb93a5","signature":"501586b075d7192d2e2151709579e660040cc0bec30b3514575780da469b2b3d"},{"version":"c46402f2298cf8f316ad352cb23e594dee5273b5ce1d6734197e8e088ead938a","signature":"02e327ac7d53a803938f215c72ea23d3c8ec66c1da92cb1589492c1228688eb1"},{"version":"3b743695fc734b286fa9edb53390bb67423e85eb75afb83f31e84fc2dfc653ba","signature":"8c104ecd6e898838aa1f31f769cd907e627253255a4d543c207a38570d89d667"},{"version":"9984cbaadfd50cb83c4cee85b59ac1089ffb499d9906c016a81a63071cf1a2a6","signature":"adba9ed7fd4ca2968ea5dff9ffac982fbf88e90e653a81bb85252b2c5cb7dcdb"},{"version":"3bbdf57d29c4e8a104dd3a35b207f6636ca7351d84e4d93dc4ba4e0ab9873153","signature":"61def873e232e9dbb3769d1a517754e8f2d0a0d5c61fd112167d7e7d7cdacaf6"},{"version":"e26741b10eb39009a15b0b58bff332989dfccf4f75fd9ba3ec1467e6fe3617e9","signature":"176419ef9e21af7704cac7d7489993d41ea63b172ce936fe212c1136b837a8d6"},{"version":"d4ee0a8bc9c6fd8efc948bbc39eb7416ccb943ccd9363313e72bac316236846b","signature":"ef41688b2d5a9c6022928eb4fef76b2211dcd7d1dbd89e031e382e48ba3a4a1a"},{"version":"8468cee1091bac0ea0a1157f2e10037048bd99c0b5b3c87de1a46b31c82d10ea","signature":"31ce6542e69674d86c18e9a85f9e93f0cf96c47ca1b45b102a45061f93ff2767"},{"version":"7f9766ee9fdfd789244c0396dd2028aee86139039d7e5d20423547c7f23dff2e","signature":"7f640e9b1e7de6623ed044baed87854b2fb50f31da1e24200233ee3100ec18c3"},{"version":"423bf36fea4557bc0771157675f91e9544866d117ac6ff6e7b7a5950333fe956","signature":"f68cc2b8963b05c256637a4f153bd0dde62ebd49584f4dd209c78e356a3e570f"},{"version":"fd953b525124872d6b43bd2843326f78d4d652f7ade9b48dd492a797af242edb","signature":"cef57ad2a305d4702e98738cd0b1aeaf6f7b5f481d38115e5eb8aad0a370e38e"},{"version":"ee070067b2e70309bc21eef6c05cc0334f965e07569e5566ae1a62de694ddfe5","signature":"aa22e51f6a1f33623796c986d3e352c173fadb784bbad5948117d82d023a8c3f"},{"version":"a2c959fa8e469c66da1f741bd33765772fe2042643c353467c7e826168998909","signature":"91a88ec75f4b67872db862233cfc67a6eeb0a614e035b622e7e63abd6ba6d488"},"94a1977d4fd33e5335fb01c3ae82a1d39fe7d7770214019a6dde6474e72a3710",{"version":"da086b18afecfb4e9d6e67280d766897f2c157972b04d24b4ffe42b3a65f3c34","signature":"523152b59eddc0a677f33e032492c181b70ba3b45111c03cf7d0be2391149ae9"},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"3671af8f58c05e9c83409ae56cb2a3db3c2e0a4cd082e685933d72f1c1a621ae","impliedFormat":1},{"version":"0f6d2591c6dbab10e42a87df2e9cfdf1673cb4001a03f32c75ad1a327329080a","impliedFormat":1},{"version":"37ecd7aa9e464b72ca1286207dc7567bff2214cd73e9da6bf9b5d3274707e210","impliedFormat":1},{"version":"ba3cb8eac8836e194aab59cc7bc6a622d2a0d4bd4041b97550d0d1a21e45fd41","impliedFormat":1},{"version":"9c1483bb321ef648c5956e587639102710d70a327b7b5faeacd9ebf7716bb6f5","signature":"eb65ef0c1e0a2b21d47a89224c1d0871e489a7e0a7aa521c28624c382e5f6938"},"a24cd480611160820022f8fcdb889be38696957861e0f6c473e1bc299cedf7a2",{"version":"ab18257c10e397a6a63df6497976d9c435b3fbe926138ea20bdf4e0d2b56a267","signature":"d9403a86606208464d02adc568c7b0531c937ea4a6d9e762919e905b9ed2dda3"},{"version":"05d5344fba0079c28fe5bda84b6a8200cb3ce8286be93bb50e92fb717a3cea2a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5d396ae26a0574be14ad0736a9da0df3aedab3627dec53bbb15515e5f165f4f0","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"version":"c2fba88eabbc27a0d7b03480bc2773217f3d675505ed210b10d4787f57e2a13c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[[109,145],[152,157]],"options":{"allowJs":true,"composite":true,"declaration":true,"declarationMap":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"jsx":4,"module":99,"noEmitHelpers":true,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./esm","removeComments":true,"rootDir":"../src","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":99},"referencedMap":[[148,1],[150,2],[149,3],[98,4],[99,5],[151,6],[95,7],[107,8],[106,9],[104,9],[103,9],[105,9],[102,10],[115,11],[114,12],[109,13],[116,14],[117,15],[153,16],[152,17],[111,18],[112,19],[110,14],[145,20],[119,21],[142,22],[141,22],[143,22],[144,23],[120,11],[128,24],[129,25],[130,26],[131,27],[127,28],[124,29],[125,30],[140,31],[154,25],[138,25],[137,32],[133,25],[135,25],[134,33],[132,25],[136,25],[139,34],[121,35],[123,36],[126,14],[122,14],[155,14],[157,37],[113,38],[118,14]],"latestChangedDtsFile":"./esm/type-tests/useFilters-typed.test-d.d.ts","version":"6.0.3"}
@@ -12,6 +12,7 @@ export default class BrowserHistory implements History {
12
12
  push(location: HistoryLocation): void;
13
13
  unsubscribe(listener: HistoryListener): void;
14
14
  subscribe(listener: HistoryListener): () => void;
15
+ dispose(): void;
15
16
  private __notify;
16
17
  private __consumePendingDebugContext;
17
18
  private __subscribe;
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserHistory.d.ts","sourceRoot":"","sources":["../../../src/history/BrowserHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAI5D;AAOD,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IAEpD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,qBAAqB,CAAoC;IAEjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,cAAc,CAAK;;IAgB3B,IAAW,QAAQ,IAAI,QAAQ,CAU9B;IAKM,IAAI,IAAI,IAAI;IAUZ,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+BpC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAiCrC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAY5C,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAYvD,OAAO,CAAC,QAAQ,CAQd;IAEF,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB,CA2BtB;IAEF,OAAO,CAAC,kBAAkB;CA2B3B"}
1
+ {"version":3,"file":"BrowserHistory.d.ts","sourceRoot":"","sources":["../../../src/history/BrowserHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAI5D;AAOD,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IAEpD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,qBAAqB,CAAoC;IAEjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,cAAc,CAAK;;IAgB3B,IAAW,QAAQ,IAAI,QAAQ,CAU9B;IAKM,IAAI,IAAI,IAAI;IAUZ,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+BpC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAiCrC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAY5C,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAUhD,OAAO,IAAI,IAAI;IAWtB,OAAO,CAAC,QAAQ,CAQd;IAEF,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB,CA2BtB;IAEF,OAAO,CAAC,kBAAkB;CA2B3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RouterRenderer.d.ts","sourceRoot":"","sources":["../../../src/routing/RouterRenderer.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,SAAS,EAA0B,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAiBhF,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAKD,KAAK,KAAK,GAAG;IAEX,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAyBF,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IAsIpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RouterRenderer.d.ts","sourceRoot":"","sources":["../../../src/routing/RouterRenderer.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,KAAK,SAAS,EAId,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAiBf,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAKD,KAAK,KAAK,GAAG;IAEX,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAyBF,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IA4GpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAKtB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAgBlD,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,IAAI;IAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAEjC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAi0BjC"}
1
+ {"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAKtB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAgBlD,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,IAAI;IAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAEjC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CA00BjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAE1B,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AASF,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAKD,iBAAS,gBAAgB,CACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAaR;AAED,eAAO,MAAM,WAAW;;CAEd,CAAC;AAUX,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CA2IlC;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,GAAG,OAAO,EAElB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CA6BnD;AAOD,wBAAgB,CAAC,CACf,QAAQ,GAAG,OAAO,EAClB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,SAAS,SAAS,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GAAG,SAAS,GAC3D,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GACjC,SAAS,EAEb,KAAK,EAAE,KAAK,CACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,GACA,KAAK,CACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,CAEA"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAE1B,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAwBF,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAKD,iBAAS,gBAAgB,CACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAaR;AAED,eAAO,MAAM,WAAW;;CAEd,CAAC;AAUX,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CA2IlC;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,GAAG,OAAO,EAElB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CA6BnD;AAOD,wBAAgB,CAAC,CACf,QAAQ,GAAG,OAAO,EAClB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,SAAS,SAAS,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GAAG,SAAS,GAC3D,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,GACjC,SAAS,EAEb,KAAK,EAAE,KAAK,CACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,GACA,KAAK,CACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,GAAG,SAAS,EACxB,SAAS,CACV,CAEA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumile/router",
3
- "version": "0.1.96",
3
+ "version": "0.1.98",
4
4
  "description": "A modern, type-safe React router with code splitting, data preloading, and Suspense integration",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -46,7 +46,7 @@
46
46
  "npm": ">=8.0.0"
47
47
  },
48
48
  "dependencies": {
49
- "@plumile/filter-query": "^0.1.96",
49
+ "@plumile/filter-query": "^0.1.98",
50
50
  "path-to-regexp": "8.4.2",
51
51
  "tslib": "^2.8.1"
52
52
  },