@bpost/bp-address-auto-complete-by-component 1.1.24 → 1.1.25

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.
@@ -0,0 +1,19 @@
1
+ import { ADDRESSLEVEL } from '../enum/address-level.enum';
2
+ export class AutofillData {
3
+ constructor(init) {
4
+ Object.assign(this, init);
5
+ if (this.boxNumber && this.boxNumber !== '') {
6
+ this.minLevel = ADDRESSLEVEL.BOX_NUMBER;
7
+ }
8
+ else if (this.streetNumber && this.streetNumber !== '') {
9
+ this.minLevel = ADDRESSLEVEL.STREET_NUMBER;
10
+ }
11
+ else if (this.streetName && this.streetName !== '') {
12
+ this.minLevel = ADDRESSLEVEL.STREET;
13
+ }
14
+ else {
15
+ this.minLevel = ADDRESSLEVEL.LOCALITY;
16
+ }
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZpbGwtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1hZGRyZXNzLWF1dG9jb21wbGV0ZS1ieS1jb21wb25lbnQvc3JjL2xpYi91dGlscy9hdXRvZmlsbC1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sWUFBWTtJQWFyQixZQUFZLElBQTRCO1FBQ3BDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDO1NBQzlDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztTQUN2QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1NBQ3pDO0lBRUwsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUREUkVTU0xFVkVMIH0gZnJvbSAnLi4vZW51bS9hZGRyZXNzLWxldmVsLmVudW0nO1xyXG5cclxuZXhwb3J0IGNsYXNzIEF1dG9maWxsRGF0YSB7XHJcblxyXG4gICAgc3RyZWV0TmFtZTogc3RyaW5nO1xyXG4gICAgc3RyZWV0TnVtYmVyOiBzdHJpbmc7XHJcbiAgICBib3hOdW1iZXI6IHN0cmluZztcclxuICAgIHBvc3RhbENvZGU6IHN0cmluZztcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IHN0cmluZztcclxuICAgIGlzQ29tcGxldGVTdHJlZXROdW1iZXI6IGJvb2xlYW47XHJcbiAgICBpc0NvbXBsZXRlQm94TnVtYmVyOiBib29sZWFuO1xyXG4gICAgc2VsZWN0ZWRBZGRyZXNzOiBhbnk7XHJcbiAgICBtaW5MZXZlbDogbnVtYmVyO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxBdXRvZmlsbERhdGE+KSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcclxuICAgICAgICBpZiAodGhpcy5ib3hOdW1iZXIgJiYgdGhpcy5ib3hOdW1iZXIgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWluTGV2ZWwgPSBBRERSRVNTTEVWRUwuQk9YX05VTUJFUjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RyZWV0TnVtYmVyICYmIHRoaXMuc3RyZWV0TnVtYmVyICE9PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLm1pbkxldmVsID0gQUREUkVTU0xFVkVMLlNUUkVFVF9OVU1CRVI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0cmVldE5hbWUgJiYgdGhpcy5zdHJlZXROYW1lICE9PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLm1pbkxldmVsID0gQUREUkVTU0xFVkVMLlNUUkVFVDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1pbkxldmVsID0gQUREUkVTU0xFVkVMLkxPQ0FMSVRZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn1cclxuIl19
@@ -5,6 +5,9 @@ export class HighlightSuggestionPipe {
5
5
  constructor(sanitizer) {
6
6
  this.sanitizer = sanitizer;
7
7
  }
8
+ escapeRegExp(text) {
9
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
10
+ }
8
11
  transform(value, args) {
9
12
  if (!args) {
10
13
  return value;
@@ -12,13 +15,12 @@ export class HighlightSuggestionPipe {
12
15
  if (Array.isArray(args) && args.length > 1) {
13
16
  return this.transformForArray(value, args);
14
17
  }
15
- if (args === '.') {
16
- args = '\\.';
18
+ // Escape special regex characters
19
+ if (typeof args === 'string') {
20
+ args = this.escapeRegExp(args);
17
21
  }
18
22
  else if (Array.isArray(args) && args.length === 1) {
19
- if (args[0] === '.') {
20
- args[0] = '\\.';
21
- }
23
+ args[0] = this.escapeRegExp(args[0]);
22
24
  }
23
25
  // Match in a case insensitive manner
24
26
  const re = new RegExp(args, 'gi');
@@ -39,11 +41,12 @@ export class HighlightSuggestionPipe {
39
41
  let ix = 0;
40
42
  for (const word of args) {
41
43
  ix++;
44
+ const escapedWord = this.escapeRegExp(word);
42
45
  if (ix < args.length) {
43
- query = query.concat(word + '|');
46
+ query = query.concat(escapedWord + '|');
44
47
  }
45
48
  else {
46
- query = query.concat(word);
49
+ query = query.concat(escapedWord);
47
50
  }
48
51
  }
49
52
  // console.warn('HighlightSuggestionPipe::transformForArray', value, args, query);
@@ -59,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
59
62
  name: 'highlightSuggestion'
60
63
  }]
61
64
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LXN1Z2dlc3Rpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1hZGRyZXNzLWF1dG9jb21wbGV0ZS1ieS1jb21wb25lbnQvc3JjL2xpYi91dGlscy9oaWdobGlnaHQtc3VnZ2VzdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUvQyxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVU7UUFFOUIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUc7WUFDM0MsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO1lBQ2hCLElBQUksR0FBRyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztZQUNwRCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDakI7U0FDRjtRQUVELHFDQUFxQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5Qix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFSjs7aUZBRXlFO1FBRXRFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLHFDQUFxQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN0RyxzRkFBc0Y7UUFDdEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFVLEVBQUUsSUFBUztRQUU3QyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtZQUN2QixFQUFFLEVBQUUsQ0FBQztZQUNMLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFFLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNuQztpQkFBTTtnQkFDTCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUUsQ0FBQzthQUM5QjtTQUNGO1FBRUQsa0ZBQWtGO1FBRWxGLE1BQU0sYUFBYSxHQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsNENBQTRDLENBQUMsQ0FBQztRQUN4SCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7b0hBekRVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQFBpcGUoe1xuICBuYW1lOiAnaGlnaGxpZ2h0U3VnZ2VzdGlvbidcbn0pXG5leHBvcnQgY2xhc3MgSGlnaGxpZ2h0U3VnZ2VzdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcblxuICAgIGlmICghYXJncykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoID4gMSApIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybUZvckFycmF5KHZhbHVlLCBhcmdzKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncyA9PT0gJy4nKSB7XG4gICAgICBhcmdzID0gJ1xcXFwuJztcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJncykgJiYgYXJncy5sZW5ndGggPT09IDEgKSB7XG4gICAgICBpZiAoYXJnc1swXSA9PT0gJy4nKSB7XG4gICAgICAgIGFyZ3NbMF0gPSAnXFxcXC4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hdGNoIGluIGEgY2FzZSBpbnNlbnNpdGl2ZSBtYW5uZXJcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYXJncywgJ2dpJyk7XG4gICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZSk7XG5cbiAgICAvLyBJZiB0aGVyZSdzIG5vIG1hdGNoLCBqdXN0IHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWUuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuIC8qICAgIGNvbnNvbGUud2FybignSGlnaGxpZ2h0U3VnZ2VzdGlvblBpcGU6OnRyYW5zZm9ybTogdmFsdWU9JyArIHZhbHVlKTtcbiAgICBjb25zb2xlLndhcm4oJ0hpZ2hsaWdodFN1Z2dlc3Rpb25QaXBlOjp0cmFuc2Zvcm06IGFyZ3M9JyArIGFyZ3MpO1xuICAgIGNvbnNvbGUud2FybignSGlnaGxpZ2h0U3VnZ2VzdGlvblBpcGU6OnRyYW5zZm9ybTogbWF0Y2g9JyArIG1hdGNoKTsgKi9cblxuICAgIGNvbnN0IHJlcGxhY2VkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlLCAnPHNwYW4gc3R5bGU9XFwnZm9udC13ZWlnaHQ6IGJvbGQ7XFwnPicgKyBtYXRjaFswXSArICc8L3NwYW4+Jyk7XG4gICAgLy8gY29uc29sZS53YXJuKCdIaWdobGlnaHRTdWdnZXN0aW9uUGlwZTo6dHJhbnNmb3JtOiByZXBsYWNlZFZhbHVlPScgKyByZXBsYWNlZFZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVwbGFjZWRWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybUZvckFycmF5KHZhbHVlOiBhbnksIGFyZ3M6IGFueSk6IGFueSB7XG5cbiAgICBsZXQgcXVlcnkgPSAnJztcbiAgICBsZXQgaXggPSAwO1xuICAgIGZvciAoY29uc3Qgd29yZCBvZiBhcmdzKSB7XG4gICAgICBpeCsrO1xuICAgICAgaWYgKGl4IDwgYXJncy5sZW5ndGgpIHtcbiAgICAgICAgcXVlcnkgPSBxdWVyeS5jb25jYXQoIHdvcmQgKyAnfCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnkgPSBxdWVyeS5jb25jYXQoIHdvcmQgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLndhcm4oJ0hpZ2hsaWdodFN1Z2dlc3Rpb25QaXBlOjp0cmFuc2Zvcm1Gb3JBcnJheScsIHZhbHVlLCBhcmdzLCBxdWVyeSk7XG5cbiAgICBjb25zdCByZXBsYWNlZFZhbHVlID0gIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgnKCcgKyBxdWVyeSArICcpJywgJ2dpJyksICc8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPiQxPC9zcGFuPicpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChyZXBsYWNlZFZhbHVlKTtcbiAgfVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LXN1Z2dlc3Rpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1hZGRyZXNzLWF1dG9jb21wbGV0ZS1ieS1jb21wb25lbnQvc3JjL2xpYi91dGlscy9oaWdobGlnaHQtc3VnZ2VzdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUV2QyxZQUFZLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsSUFBVTtRQUU5QixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRztZQUMzQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUM7UUFFRCxrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUc7WUFDcEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFOUIsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUo7O2lGQUV5RTtRQUV0RSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxxQ0FBcUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDdEcsc0ZBQXNGO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBVSxFQUFFLElBQVM7UUFFN0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDdkIsRUFBRSxFQUFFLENBQUM7WUFDTCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFFLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUMxQztpQkFBTTtnQkFDTCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBRSxXQUFXLENBQUUsQ0FBQzthQUNyQztTQUNGO1FBRUQsa0ZBQWtGO1FBRWxGLE1BQU0sYUFBYSxHQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsNENBQTRDLENBQUMsQ0FBQztRQUN4SCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7b0hBN0RVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQFBpcGUoe1xuICBuYW1lOiAnaGlnaGxpZ2h0U3VnZ2VzdGlvbidcbn0pXG5leHBvcnQgY2xhc3MgSGlnaGxpZ2h0U3VnZ2VzdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIHByaXZhdGUgZXNjYXBlUmVnRXhwKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcblxuICAgIGlmICghYXJncykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoID4gMSApIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybUZvckFycmF5KHZhbHVlLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBFc2NhcGUgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzXG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJykge1xuICAgICAgYXJncyA9IHRoaXMuZXNjYXBlUmVnRXhwKGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmdzKSAmJiBhcmdzLmxlbmd0aCA9PT0gMSApIHtcbiAgICAgIGFyZ3NbMF0gPSB0aGlzLmVzY2FwZVJlZ0V4cChhcmdzWzBdKTtcbiAgICB9XG5cbiAgICAvLyBNYXRjaCBpbiBhIGNhc2UgaW5zZW5zaXRpdmUgbWFubmVyXG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGFyZ3MsICdnaScpO1xuICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2gocmUpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBubyBtYXRjaCwganVzdCByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlLlxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAvKiAgICBjb25zb2xlLndhcm4oJ0hpZ2hsaWdodFN1Z2dlc3Rpb25QaXBlOjp0cmFuc2Zvcm06IHZhbHVlPScgKyB2YWx1ZSk7XG4gICAgY29uc29sZS53YXJuKCdIaWdobGlnaHRTdWdnZXN0aW9uUGlwZTo6dHJhbnNmb3JtOiBhcmdzPScgKyBhcmdzKTtcbiAgICBjb25zb2xlLndhcm4oJ0hpZ2hsaWdodFN1Z2dlc3Rpb25QaXBlOjp0cmFuc2Zvcm06IG1hdGNoPScgKyBtYXRjaCk7ICovXG5cbiAgICBjb25zdCByZXBsYWNlZFZhbHVlID0gdmFsdWUucmVwbGFjZShyZSwgJzxzcGFuIHN0eWxlPVxcJ2ZvbnQtd2VpZ2h0OiBib2xkO1xcJz4nICsgbWF0Y2hbMF0gKyAnPC9zcGFuPicpO1xuICAgIC8vIGNvbnNvbGUud2FybignSGlnaGxpZ2h0U3VnZ2VzdGlvblBpcGU6OnRyYW5zZm9ybTogcmVwbGFjZWRWYWx1ZT0nICsgcmVwbGFjZWRWYWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlcGxhY2VkVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1Gb3JBcnJheSh2YWx1ZTogYW55LCBhcmdzOiBhbnkpOiBhbnkge1xuXG4gICAgbGV0IHF1ZXJ5ID0gJyc7XG4gICAgbGV0IGl4ID0gMDtcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2YgYXJncykge1xuICAgICAgaXgrKztcbiAgICAgIGNvbnN0IGVzY2FwZWRXb3JkID0gdGhpcy5lc2NhcGVSZWdFeHAod29yZCk7XG4gICAgICBpZiAoaXggPCBhcmdzLmxlbmd0aCkge1xuICAgICAgICBxdWVyeSA9IHF1ZXJ5LmNvbmNhdCggZXNjYXBlZFdvcmQgKyAnfCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnkgPSBxdWVyeS5jb25jYXQoIGVzY2FwZWRXb3JkICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS53YXJuKCdIaWdobGlnaHRTdWdnZXN0aW9uUGlwZTo6dHJhbnNmb3JtRm9yQXJyYXknLCB2YWx1ZSwgYXJncywgcXVlcnkpO1xuXG4gICAgY29uc3QgcmVwbGFjZWRWYWx1ZSA9ICB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoJygnICsgcXVlcnkgKyAnKScsICdnaScpLCAnPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtcIj4kMTwvc3Bhbj4nKTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVwbGFjZWRWYWx1ZSk7XG4gIH1cbn1cbiJdfQ==