ngx-image-cropper 8.1.0 → 8.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -70,6 +70,16 @@ When you choose a file from the file input, it will trigger `fileChangeEvent`.
70
70
  That event is then passed to the image cropper through `imageChangedEvent` which will load the image into the cropper.
71
71
  Everytime you release the mouse, the `imageCropped` event will be triggered with the cropped image as a Base64 string in its payload.
72
72
 
73
+ ## Alternatives
74
+
75
+ ### If you find ngx-image-cropper doesn't cover your needs we recommend taking a look at Pintura
76
+
77
+ Pintura features cropping, rotating, flipping, filtering, annotating, and lots of additional functionality to cover all your image and video editing needs on both mobile and desktop devices.
78
+
79
+ [![Pintura example](https://github.com/Mawi137/ngx-image-cropper/raw/master/pintura-animation.gif)](https://pqina.nl/pintura/?aff=yMk6n8)
80
+
81
+ [Learn more about Pintura Image Editor](https://pqina.nl/pintura/?aff=yMk6n8)
82
+
73
83
  ## API
74
84
  All inputs are optional. Either the `imageChangedEvent`, `imageBase64` or `imageFile` should be set to load an image into the cropper.
75
85
  ### Inputs
@@ -185,4 +185,4 @@ export class CropperState {
185
185
  };
186
186
  }
187
187
  }
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy9saWIvY29tcG9uZW50L2Nyb3BwZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFFRSxZQUFPLEdBQW1CO1lBQ3hCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsSUFBSTtZQUNkLG1CQUFtQixFQUFFLElBQUk7WUFDekIsV0FBVyxFQUFFLENBQUM7WUFDZCw0QkFBNEIsRUFBRSxJQUFJO1lBQ2xDLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixlQUFlLEVBQUUsQ0FBQztZQUNsQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsY0FBYyxFQUFFLENBQUM7WUFDakIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsZUFBZSxFQUFFLElBQUk7WUFDckIsd0JBQXdCLEVBQUUsS0FBSztZQUMvQixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLHFCQUFxQixFQUFFLFNBQVM7WUFDaEMsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUlGLFlBQU8sR0FBb0IsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFDeEQsY0FB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QUUsQ0FBQztZQUNMLEVBQUUsRUFBRSxDQUFDO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFRLENBQUMsS0FBSztZQUN2QixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQVEsQ0FBQyxNQUFNO1NBQ3pCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcm9wcGVyT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDcm9wcGVyUG9zaXRpb24sIERpbWVuc2lvbnMsIEltYWdlVHJhbnNmb3JtLCBMb2FkZWRJbWFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2hlY2tDcm9wcGVyUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9jcm9wcGVyLXBvc2l0aW9uLnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIENyb3BwZXJTdGF0ZSB7XG5cbiAgb3B0aW9uczogQ3JvcHBlck9wdGlvbnMgPSB7XG4gICAgZm9ybWF0OiAncG5nJyxcbiAgICBvdXRwdXQ6ICdibG9iJyxcbiAgICBhdXRvQ3JvcDogdHJ1ZSxcbiAgICBtYWludGFpbkFzcGVjdFJhdGlvOiB0cnVlLFxuICAgIGFzcGVjdFJhdGlvOiAxLFxuICAgIHJlc2V0Q3JvcE9uQXNwZWN0UmF0aW9DaGFuZ2U6IHRydWUsXG4gICAgcmVzaXplVG9XaWR0aDogMCxcbiAgICByZXNpemVUb0hlaWdodDogMCxcbiAgICBjcm9wcGVyTWluV2lkdGg6IDAsXG4gICAgY3JvcHBlck1pbkhlaWdodDogMCxcbiAgICBjcm9wcGVyTWF4SGVpZ2h0OiAwLFxuICAgIGNyb3BwZXJNYXhXaWR0aDogMCxcbiAgICBjcm9wcGVyU3RhdGljV2lkdGg6IDAsXG4gICAgY3JvcHBlclN0YXRpY0hlaWdodDogMCxcbiAgICBjYW52YXNSb3RhdGlvbjogMCxcbiAgICByb3VuZENyb3BwZXI6IGZhbHNlLFxuICAgIG9ubHlTY2FsZURvd246IGZhbHNlLFxuICAgIGltYWdlUXVhbGl0eTogOTIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBudWxsLFxuICAgIGNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgaGlkZVJlc2l6ZVNxdWFyZXM6IGZhbHNlLFxuICAgIGFsaWduSW1hZ2U6ICdjZW50ZXInLFxuICAgIGNyb3BwZXJGcmFtZUFyaWFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGNoZWNrSW1hZ2VUeXBlOiB0cnVlXG4gIH07XG5cbiAgbG9hZGVkSW1hZ2U/OiBMb2FkZWRJbWFnZTtcbiAgbWF4U2l6ZT86IERpbWVuc2lvbnM7XG4gIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiA9IHt4MTogMCwgeDI6IDAsIHkxOiAwLCB5MjogMH07XG4gIHRyYW5zZm9ybTogSW1hZ2VUcmFuc2Zvcm0gPSB7fTtcblxuICAvLyBJbnRlcm5hbFxuICBjcm9wcGVyU2NhbGVkTWluV2lkdGggPSAyMDtcbiAgY3JvcHBlclNjYWxlZE1pbkhlaWdodCA9IDIwO1xuICBjcm9wcGVyU2NhbGVkTWF4V2lkdGggPSAyMDtcbiAgY3JvcHBlclNjYWxlZE1heEhlaWdodCA9IDIwO1xuICBzdGVwU2l6ZSA9IDM7XG5cbiAgc2V0T3B0aW9uc0Zyb21DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0T3B0aW9ucyhjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKGNoYW5nZXMpXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5IGluIHRoaXMub3B0aW9ucylcbiAgICAgIC5yZWR1Y2UoKGFjYywgW2tleSwgY2hhbmdlXSkgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBba2V5XTogY2hhbmdlLmN1cnJlbnRWYWx1ZVxuICAgICAgfSksIHt9IGFzIFBhcnRpYWw8Q3JvcHBlck9wdGlvbnM+KTtcbiAgICBpZiAoT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDcm9wcGVyT3B0aW9ucz4pOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi4ob3B0aW9ucyB8fCB7fSlcbiAgICB9O1xuICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKCk7XG5cbiAgICBpZiAoIXRoaXMubG9hZGVkSW1hZ2U/LnRyYW5zZm9ybWVkLmltYWdlLmNvbXBsZXRlIHx8ICF0aGlzLm1heFNpemUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcG9zaXRpb25Qb3NzaWJseUNoYW5nZWQgPSBmYWxzZTtcbiAgICBpZiAoKHRoaXMub3B0aW9ucy5tYWludGFpbkFzcGVjdFJhdGlvICYmIG9wdGlvbnNbJ2FzcGVjdFJhdGlvJ10pIHx8IG9wdGlvbnNbJ21haW50YWluQXNwZWN0UmF0aW8nXSkge1xuICAgICAgdGhpcy5zZXRDcm9wcGVyU2NhbGVkTWluU2l6ZSgpO1xuICAgICAgdGhpcy5zZXRDcm9wcGVyU2NhbGVkTWF4U2l6ZSgpO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tYWludGFpbkFzcGVjdFJhdGlvICYmICh0aGlzLm9wdGlvbnMucmVzZXRDcm9wT25Bc3BlY3RSYXRpb0NoYW5nZSB8fCAhdGhpcy5hc3BlY3RSYXRpb0lzQ29ycmVjdCgpKSkge1xuICAgICAgICB0aGlzLmNyb3BwZXIgPSB0aGlzLm1heFNpemVDcm9wcGVyUG9zaXRpb24oKTtcbiAgICAgICAgcG9zaXRpb25Qb3NzaWJseUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9uc1snY3JvcHBlck1pbldpZHRoJ10gfHwgb3B0aW9uc1snY3JvcHBlck1pbkhlaWdodCddKSB7XG4gICAgICAgIHRoaXMuc2V0Q3JvcHBlclNjYWxlZE1pblNpemUoKTtcbiAgICAgICAgcG9zaXRpb25Qb3NzaWJseUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnNbJ2Nyb3BwZXJNYXhXaWR0aCddIHx8IG9wdGlvbnNbJ2Nyb3BwZXJNYXhIZWlnaHQnXSkge1xuICAgICAgICB0aGlzLnNldENyb3BwZXJTY2FsZWRNYXhTaXplKCk7XG4gICAgICAgIHBvc2l0aW9uUG9zc2libHlDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zWydjcm9wcGVyU3RhdGljV2lkdGgnXSB8fCBvcHRpb25zWydjcm9wcGVyU3RhdGljSGVpZ2h0J10pIHtcbiAgICAgICAgcG9zaXRpb25Qb3NzaWJseUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvblBvc3NpYmx5Q2hhbmdlZCkge1xuICAgICAgdGhpcy5jcm9wcGVyID0gY2hlY2tDcm9wcGVyUG9zaXRpb24odGhpcy5jcm9wcGVyLCB0aGlzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYWludGFpbkFzcGVjdFJhdGlvICYmICF0aGlzLm9wdGlvbnMuYXNwZWN0UmF0aW8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYGFzcGVjdFJhdGlvYCBzaG91bGQgPiAwIHdoZW4gYG1haW50YWluQXNwZWN0UmF0aW9gIGlzIGVuYWJsZWQnKTtcbiAgICB9XG4gIH1cblxuICBzZXRNYXhTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXhTaXplID0ge3dpZHRoLCBoZWlnaHR9O1xuICAgIHRoaXMuc2V0Q3JvcHBlclNjYWxlZE1pblNpemUoKTtcbiAgICB0aGlzLnNldENyb3BwZXJTY2FsZWRNYXhTaXplKCk7XG4gIH1cblxuICBzZXRDcm9wcGVyU2NhbGVkTWluU2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkZWRJbWFnZT8udHJhbnNmb3JtZWQuc2l6ZSkge1xuICAgICAgdGhpcy5zZXRDcm9wcGVyU2NhbGVkTWluV2lkdGgoKTtcbiAgICAgIHRoaXMuc2V0Q3JvcHBlclNjYWxlZE1pbkhlaWdodCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCA9IDIwO1xuICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0ID0gMjA7XG4gICAgfVxuICB9XG5cbiAgc2V0Q3JvcHBlclNjYWxlZE1pbldpZHRoKCk6IHZvaWQge1xuICAgIHRoaXMuY3JvcHBlclNjYWxlZE1pbldpZHRoID0gdGhpcy5vcHRpb25zLmNyb3BwZXJNaW5XaWR0aCA+IDBcbiAgICAgID8gTWF0aC5tYXgoMjAsIHRoaXMub3B0aW9ucy5jcm9wcGVyTWluV2lkdGggLyB0aGlzLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLndpZHRoICogdGhpcy5tYXhTaXplIS53aWR0aClcbiAgICAgIDogMjA7XG4gIH1cblxuICBzZXRDcm9wcGVyU2NhbGVkTWluSGVpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubWFpbnRhaW5Bc3BlY3RSYXRpbykge1xuICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0ID0gTWF0aC5tYXgoMjAsIHRoaXMuY3JvcHBlclNjYWxlZE1pbldpZHRoIC8gdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jcm9wcGVyTWluSGVpZ2h0ID4gMCkge1xuICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0ID0gTWF0aC5tYXgoXG4gICAgICAgIDIwLFxuICAgICAgICB0aGlzLm9wdGlvbnMuY3JvcHBlck1pbkhlaWdodCAvIHRoaXMubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUuaGVpZ2h0ICogdGhpcy5tYXhTaXplIS5oZWlnaHRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JvcHBlclNjYWxlZE1pbkhlaWdodCA9IDIwO1xuICAgIH1cbiAgfVxuXG4gIHNldENyb3BwZXJTY2FsZWRNYXhTaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRlZEltYWdlPy50cmFuc2Zvcm1lZC5zaXplKSB7XG4gICAgICBjb25zdCByYXRpbyA9IHRoaXMubG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAvIHRoaXMubWF4U2l6ZSEud2lkdGg7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCA9IHRoaXMub3B0aW9ucy5jcm9wcGVyTWF4V2lkdGggPiAyMCA/IHRoaXMub3B0aW9ucy5jcm9wcGVyTWF4V2lkdGggLyByYXRpbyA6IHRoaXMubWF4U2l6ZSEud2lkdGg7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQgPSB0aGlzLm9wdGlvbnMuY3JvcHBlck1heEhlaWdodCA+IDIwID8gdGhpcy5vcHRpb25zLmNyb3BwZXJNYXhIZWlnaHQgLyByYXRpbyA6IHRoaXMubWF4U2l6ZSEuaGVpZ2h0O1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tYWludGFpbkFzcGVjdFJhdGlvKSB7XG4gICAgICAgIGlmICh0aGlzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCA+IHRoaXMuY3JvcHBlclNjYWxlZE1heEhlaWdodCAqIHRoaXMub3B0aW9ucy5hc3BlY3RSYXRpbykge1xuICAgICAgICAgIHRoaXMuY3JvcHBlclNjYWxlZE1heFdpZHRoID0gdGhpcy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0ICogdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcHBlclNjYWxlZE1heFdpZHRoIDwgdGhpcy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0ICogdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0ID0gdGhpcy5jcm9wcGVyU2NhbGVkTWF4V2lkdGggLyB0aGlzLm9wdGlvbnMuYXNwZWN0UmF0aW87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWF4V2lkdGggPSB0aGlzLm1heFNpemUhLndpZHRoO1xuICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0ID0gdGhpcy5tYXhTaXplIS5oZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgZXF1YWxzQ3JvcHBlclBvc2l0aW9uKGNyb3BwZXI/OiBDcm9wcGVyUG9zaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jcm9wcGVyID09IG51bGwgJiYgY3JvcHBlciA9PSBudWxsXG4gICAgICB8fCB0aGlzLmNyb3BwZXIgIT0gbnVsbCAmJiBjcm9wcGVyICE9IG51bGxcbiAgICAgICYmIHRoaXMuY3JvcHBlci54MS50b0ZpeGVkKDMpID09PSBjcm9wcGVyLngxLnRvRml4ZWQoMylcbiAgICAgICYmIHRoaXMuY3JvcHBlci55MS50b0ZpeGVkKDMpID09PSBjcm9wcGVyLnkxLnRvRml4ZWQoMylcbiAgICAgICYmIHRoaXMuY3JvcHBlci54Mi50b0ZpeGVkKDMpID09PSBjcm9wcGVyLngyLnRvRml4ZWQoMylcbiAgICAgICYmIHRoaXMuY3JvcHBlci55Mi50b0ZpeGVkKDMpID09PSBjcm9wcGVyLnkyLnRvRml4ZWQoMyk7XG4gIH1cblxuICBlcXVhbHNUcmFuc2Zvcm1UcmFuc2xhdGUodHJhbnNmb3JtOiBJbWFnZVRyYW5zZm9ybSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy50cmFuc2Zvcm0udHJhbnNsYXRlSCA/PyAwKSA9PT0gKHRyYW5zZm9ybS50cmFuc2xhdGVIID8/IDApXG4gICAgICAmJiAodGhpcy50cmFuc2Zvcm0udHJhbnNsYXRlViA/PyAwKSA9PT0gKHRyYW5zZm9ybS50cmFuc2xhdGVWID8/IDApO1xuICB9XG5cbiAgZXF1YWxzVHJhbnNmb3JtKHRyYW5zZm9ybTogSW1hZ2VUcmFuc2Zvcm0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcXVhbHNUcmFuc2Zvcm1UcmFuc2xhdGUodHJhbnNmb3JtKVxuICAgICAgJiYgKHRoaXMudHJhbnNmb3JtLnNjYWxlID8/IDEpID09PSAodHJhbnNmb3JtLnNjYWxlID8/IDEpXG4gICAgICAmJiAodGhpcy50cmFuc2Zvcm0ucm90YXRlID8/IDApID09PSAodHJhbnNmb3JtLnJvdGF0ZSA/PyAwKVxuICAgICAgJiYgKHRoaXMudHJhbnNmb3JtLmZsaXBIID8/IGZhbHNlKSA9PT0gKHRyYW5zZm9ybS5mbGlwSCA/PyBmYWxzZSlcbiAgICAgICYmICh0aGlzLnRyYW5zZm9ybS5mbGlwViA/PyBmYWxzZSkgPT09ICh0cmFuc2Zvcm0uZmxpcFYgPz8gZmFsc2UpO1xuICB9XG5cbiAgYXNwZWN0UmF0aW9Jc0NvcnJlY3QoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudENyb3BBc3BlY3RSYXRpbyA9ICh0aGlzLmNyb3BwZXIueDIgLSB0aGlzLmNyb3BwZXIueDEpIC8gKHRoaXMuY3JvcHBlci55MiAtIHRoaXMuY3JvcHBlci55MSk7XG4gICAgcmV0dXJuIGN1cnJlbnRDcm9wQXNwZWN0UmF0aW8gPT09IHRoaXMub3B0aW9ucy5hc3BlY3RSYXRpbztcbiAgfVxuXG4gIHJlc2l6ZUNyb3BwZXJQb3NpdGlvbihvbGRNYXhTaXplOiBEaW1lbnNpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNyb3BwZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG9sZE1heFNpemUud2lkdGggIT09IHRoaXMubWF4U2l6ZSEud2lkdGggfHwgb2xkTWF4U2l6ZS5oZWlnaHQgIT09IHRoaXMubWF4U2l6ZSEuaGVpZ2h0KSB7XG4gICAgICB0aGlzLmNyb3BwZXIgPSB7XG4gICAgICAgIHgxOiB0aGlzLmNyb3BwZXIueDEgKiB0aGlzLm1heFNpemUhLndpZHRoIC8gb2xkTWF4U2l6ZS53aWR0aCxcbiAgICAgICAgeDI6IHRoaXMuY3JvcHBlci54MiAqIHRoaXMubWF4U2l6ZSEud2lkdGggLyBvbGRNYXhTaXplLndpZHRoLFxuICAgICAgICB5MTogdGhpcy5jcm9wcGVyLnkxICogdGhpcy5tYXhTaXplIS5oZWlnaHQgLyBvbGRNYXhTaXplLmhlaWdodCxcbiAgICAgICAgeTI6IHRoaXMuY3JvcHBlci55MiAqIHRoaXMubWF4U2l6ZSEuaGVpZ2h0IC8gb2xkTWF4U2l6ZS5oZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgbWF4U2l6ZUNyb3BwZXJQb3NpdGlvbigpOiBDcm9wcGVyUG9zaXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB4MTogMCxcbiAgICAgIHkxOiAwLFxuICAgICAgeDI6IHRoaXMubWF4U2l6ZSEud2lkdGgsXG4gICAgICB5MjogdGhpcy5tYXhTaXplIS5oZWlnaHRcbiAgICB9O1xuICB9XG59XG4iXX0=
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy9saWIvY29tcG9uZW50L2Nyb3BwZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFFRSxZQUFPLEdBQW1CO1lBQ3hCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsSUFBSTtZQUNkLG1CQUFtQixFQUFFLElBQUk7WUFDekIsV0FBVyxFQUFFLENBQUM7WUFDZCw0QkFBNEIsRUFBRSxJQUFJO1lBQ2xDLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixlQUFlLEVBQUUsQ0FBQztZQUNsQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsY0FBYyxFQUFFLENBQUM7WUFDakIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsZUFBZSxFQUFFLElBQUk7WUFDckIsd0JBQXdCLEVBQUUsS0FBSztZQUMvQixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLHFCQUFxQixFQUFFLFNBQVM7WUFDaEMsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUlGLFlBQU8sR0FBb0IsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFDeEQsY0FB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SSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU07Z0JBQzlELEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTTthQUMvRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTztZQUNMLEVBQUUsRUFBRSxDQUFDO1lBQ0wsRUFBRSxFQUFFLENBQUM7WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQVEsQ0FBQyxLQUFLO1lBQ3ZCLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBUSxDQUFDLE1BQU07U0FDekIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyb3BwZXJPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jcm9wcGVyLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiwgRGltZW5zaW9ucywgSW1hZ2VUcmFuc2Zvcm0sIExvYWRlZEltYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja0Nyb3BwZXJQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL2Nyb3BwZXItcG9zaXRpb24udXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ3JvcHBlclN0YXRlIHtcblxuICBvcHRpb25zOiBDcm9wcGVyT3B0aW9ucyA9IHtcbiAgICBmb3JtYXQ6ICdwbmcnLFxuICAgIG91dHB1dDogJ2Jsb2InLFxuICAgIGF1dG9Dcm9wOiB0cnVlLFxuICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRydWUsXG4gICAgYXNwZWN0UmF0aW86IDEsXG4gICAgcmVzZXRDcm9wT25Bc3BlY3RSYXRpb0NoYW5nZTogdHJ1ZSxcbiAgICByZXNpemVUb1dpZHRoOiAwLFxuICAgIHJlc2l6ZVRvSGVpZ2h0OiAwLFxuICAgIGNyb3BwZXJNaW5XaWR0aDogMCxcbiAgICBjcm9wcGVyTWluSGVpZ2h0OiAwLFxuICAgIGNyb3BwZXJNYXhIZWlnaHQ6IDAsXG4gICAgY3JvcHBlck1heFdpZHRoOiAwLFxuICAgIGNyb3BwZXJTdGF0aWNXaWR0aDogMCxcbiAgICBjcm9wcGVyU3RhdGljSGVpZ2h0OiAwLFxuICAgIGNhbnZhc1JvdGF0aW9uOiAwLFxuICAgIHJvdW5kQ3JvcHBlcjogZmFsc2UsXG4gICAgb25seVNjYWxlRG93bjogZmFsc2UsXG4gICAgaW1hZ2VRdWFsaXR5OiA5MixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bGwsXG4gICAgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICBoaWRlUmVzaXplU3F1YXJlczogZmFsc2UsXG4gICAgYWxpZ25JbWFnZTogJ2NlbnRlcicsXG4gICAgY3JvcHBlckZyYW1lQXJpYUxhYmVsOiB1bmRlZmluZWQsXG4gICAgY2hlY2tJbWFnZVR5cGU6IHRydWVcbiAgfTtcblxuICBsb2FkZWRJbWFnZT86IExvYWRlZEltYWdlO1xuICBtYXhTaXplPzogRGltZW5zaW9ucztcbiAgY3JvcHBlcjogQ3JvcHBlclBvc2l0aW9uID0ge3gxOiAwLCB4MjogMCwgeTE6IDAsIHkyOiAwfTtcbiAgdHJhbnNmb3JtOiBJbWFnZVRyYW5zZm9ybSA9IHt9O1xuXG4gIC8vIEludGVybmFsXG4gIGNyb3BwZXJTY2FsZWRNaW5XaWR0aCA9IDIwO1xuICBjcm9wcGVyU2NhbGVkTWluSGVpZ2h0ID0gMjA7XG4gIGNyb3BwZXJTY2FsZWRNYXhXaWR0aCA9IDIwO1xuICBjcm9wcGVyU2NhbGVkTWF4SGVpZ2h0ID0gMjA7XG4gIHN0ZXBTaXplID0gMztcblxuICBzZXRPcHRpb25zRnJvbUNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRPcHRpb25zKGNoYW5nZXNbJ29wdGlvbnMnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmVudHJpZXMoY2hhbmdlcylcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgaW4gdGhpcy5vcHRpb25zKVxuICAgICAgLnJlZHVjZSgoYWNjLCBba2V5LCBjaGFuZ2VdKSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtrZXldOiBjaGFuZ2UuY3VycmVudFZhbHVlXG4gICAgICB9KSwge30gYXMgUGFydGlhbDxDcm9wcGVyT3B0aW9ucz4pO1xuICAgIGlmIChPYmplY3Qua2V5cyhvcHRpb25zKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNldE9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPENyb3BwZXJPcHRpb25zPik6IHZvaWQge1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIC4uLihvcHRpb25zIHx8IHt9KVxuICAgIH07XG4gICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMoKTtcblxuICAgIGlmICghdGhpcy5sb2FkZWRJbWFnZT8udHJhbnNmb3JtZWQuaW1hZ2UuY29tcGxldGUgfHwgIXRoaXMubWF4U2l6ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwb3NpdGlvblBvc3NpYmx5Q2hhbmdlZCA9IGZhbHNlO1xuICAgIGlmICgodGhpcy5vcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW8gJiYgb3B0aW9uc1snYXNwZWN0UmF0aW8nXSkgfHwgb3B0aW9uc1snbWFpbnRhaW5Bc3BlY3RSYXRpbyddKSB7XG4gICAgICB0aGlzLnNldENyb3BwZXJTY2FsZWRNaW5TaXplKCk7XG4gICAgICB0aGlzLnNldENyb3BwZXJTY2FsZWRNYXhTaXplKCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW8gJiYgKHRoaXMub3B0aW9ucy5yZXNldENyb3BPbkFzcGVjdFJhdGlvQ2hhbmdlIHx8ICF0aGlzLmFzcGVjdFJhdGlvSXNDb3JyZWN0KCkpKSB7XG4gICAgICAgIHRoaXMuY3JvcHBlciA9IHRoaXMubWF4U2l6ZUNyb3BwZXJQb3NpdGlvbigpO1xuICAgICAgICBwb3NpdGlvblBvc3NpYmx5Q2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zWydjcm9wcGVyTWluV2lkdGgnXSB8fCBvcHRpb25zWydjcm9wcGVyTWluSGVpZ2h0J10pIHtcbiAgICAgICAgdGhpcy5zZXRDcm9wcGVyU2NhbGVkTWluU2l6ZSgpO1xuICAgICAgICBwb3NpdGlvblBvc3NpYmx5Q2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uc1snY3JvcHBlck1heFdpZHRoJ10gfHwgb3B0aW9uc1snY3JvcHBlck1heEhlaWdodCddKSB7XG4gICAgICAgIHRoaXMuc2V0Q3JvcHBlclNjYWxlZE1heFNpemUoKTtcbiAgICAgICAgcG9zaXRpb25Qb3NzaWJseUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnNbJ2Nyb3BwZXJTdGF0aWNXaWR0aCddIHx8IG9wdGlvbnNbJ2Nyb3BwZXJTdGF0aWNIZWlnaHQnXSkge1xuICAgICAgICBwb3NpdGlvblBvc3NpYmx5Q2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uUG9zc2libHlDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJQb3NpdGlvbih0aGlzLmNyb3BwZXIsIHRoaXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW8gJiYgIXRoaXMub3B0aW9ucy5hc3BlY3RSYXRpbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgYXNwZWN0UmF0aW9gIHNob3VsZCA+IDAgd2hlbiBgbWFpbnRhaW5Bc3BlY3RSYXRpb2AgaXMgZW5hYmxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHNldE1heFNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1heFNpemUgPSB7d2lkdGgsIGhlaWdodH07XG4gICAgdGhpcy5zZXRDcm9wcGVyU2NhbGVkTWluU2l6ZSgpO1xuICAgIHRoaXMuc2V0Q3JvcHBlclNjYWxlZE1heFNpemUoKTtcbiAgfVxuXG4gIHNldENyb3BwZXJTY2FsZWRNaW5TaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRlZEltYWdlPy50cmFuc2Zvcm1lZC5zaXplKSB7XG4gICAgICB0aGlzLnNldENyb3BwZXJTY2FsZWRNaW5XaWR0aCgpO1xuICAgICAgdGhpcy5zZXRDcm9wcGVyU2NhbGVkTWluSGVpZ2h0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JvcHBlclNjYWxlZE1pbldpZHRoID0gMjA7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQgPSAyMDtcbiAgICB9XG4gIH1cblxuICBzZXRDcm9wcGVyU2NhbGVkTWluV2lkdGgoKTogdm9pZCB7XG4gICAgdGhpcy5jcm9wcGVyU2NhbGVkTWluV2lkdGggPSB0aGlzLm9wdGlvbnMuY3JvcHBlck1pbldpZHRoID4gMFxuICAgICAgPyBNYXRoLm1heCgyMCwgdGhpcy5vcHRpb25zLmNyb3BwZXJNaW5XaWR0aCAvIHRoaXMubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUud2lkdGggKiB0aGlzLm1heFNpemUhLndpZHRoKVxuICAgICAgOiAyMDtcbiAgfVxuXG4gIHNldENyb3BwZXJTY2FsZWRNaW5IZWlnaHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYWludGFpbkFzcGVjdFJhdGlvKSB7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQgPSBNYXRoLm1heCgyMCwgdGhpcy5jcm9wcGVyU2NhbGVkTWluV2lkdGggLyB0aGlzLm9wdGlvbnMuYXNwZWN0UmF0aW8pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmNyb3BwZXJNaW5IZWlnaHQgPiAwKSB7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQgPSBNYXRoLm1heChcbiAgICAgICAgMjAsXG4gICAgICAgIHRoaXMub3B0aW9ucy5jcm9wcGVyTWluSGVpZ2h0IC8gdGhpcy5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQgKiB0aGlzLm1heFNpemUhLmhlaWdodFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0ID0gMjA7XG4gICAgfVxuICB9XG5cbiAgc2V0Q3JvcHBlclNjYWxlZE1heFNpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZGVkSW1hZ2U/LnRyYW5zZm9ybWVkLnNpemUpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gdGhpcy5sb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLndpZHRoIC8gdGhpcy5tYXhTaXplIS53aWR0aDtcbiAgICAgIHRoaXMuY3JvcHBlclNjYWxlZE1heFdpZHRoID0gdGhpcy5vcHRpb25zLmNyb3BwZXJNYXhXaWR0aCA+IDIwID8gdGhpcy5vcHRpb25zLmNyb3BwZXJNYXhXaWR0aCAvIHJhdGlvIDogdGhpcy5tYXhTaXplIS53aWR0aDtcbiAgICAgIHRoaXMuY3JvcHBlclNjYWxlZE1heEhlaWdodCA9IHRoaXMub3B0aW9ucy5jcm9wcGVyTWF4SGVpZ2h0ID4gMjAgPyB0aGlzLm9wdGlvbnMuY3JvcHBlck1heEhlaWdodCAvIHJhdGlvIDogdGhpcy5tYXhTaXplIS5oZWlnaHQ7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW8pIHtcbiAgICAgICAgaWYgKHRoaXMuY3JvcHBlclNjYWxlZE1heFdpZHRoID4gdGhpcy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0ICogdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgdGhpcy5jcm9wcGVyU2NhbGVkTWF4V2lkdGggPSB0aGlzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQgKiB0aGlzLm9wdGlvbnMuYXNwZWN0UmF0aW87XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wcGVyU2NhbGVkTWF4V2lkdGggPCB0aGlzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQgKiB0aGlzLm9wdGlvbnMuYXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQgPSB0aGlzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCAvIHRoaXMub3B0aW9ucy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCA9IHRoaXMubWF4U2l6ZSEud2lkdGg7XG4gICAgICB0aGlzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQgPSB0aGlzLm1heFNpemUhLmhlaWdodDtcbiAgICB9XG4gIH1cblxuICBlcXVhbHNDcm9wcGVyUG9zaXRpb24oY3JvcHBlcj86IENyb3BwZXJQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNyb3BwZXIgPT0gbnVsbCAmJiBjcm9wcGVyID09IG51bGxcbiAgICAgIHx8IHRoaXMuY3JvcHBlciAhPSBudWxsICYmIGNyb3BwZXIgIT0gbnVsbFxuICAgICAgJiYgdGhpcy5jcm9wcGVyLngxLnRvRml4ZWQoMykgPT09IGNyb3BwZXIueDEudG9GaXhlZCgzKVxuICAgICAgJiYgdGhpcy5jcm9wcGVyLnkxLnRvRml4ZWQoMykgPT09IGNyb3BwZXIueTEudG9GaXhlZCgzKVxuICAgICAgJiYgdGhpcy5jcm9wcGVyLngyLnRvRml4ZWQoMykgPT09IGNyb3BwZXIueDIudG9GaXhlZCgzKVxuICAgICAgJiYgdGhpcy5jcm9wcGVyLnkyLnRvRml4ZWQoMykgPT09IGNyb3BwZXIueTIudG9GaXhlZCgzKTtcbiAgfVxuXG4gIGVxdWFsc1RyYW5zZm9ybVRyYW5zbGF0ZSh0cmFuc2Zvcm06IEltYWdlVHJhbnNmb3JtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnRyYW5zZm9ybS50cmFuc2xhdGVIID8/IDApID09PSAodHJhbnNmb3JtLnRyYW5zbGF0ZUggPz8gMClcbiAgICAgICYmICh0aGlzLnRyYW5zZm9ybS50cmFuc2xhdGVWID8/IDApID09PSAodHJhbnNmb3JtLnRyYW5zbGF0ZVYgPz8gMCk7XG4gIH1cblxuICBlcXVhbHNUcmFuc2Zvcm0odHJhbnNmb3JtOiBJbWFnZVRyYW5zZm9ybSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVxdWFsc1RyYW5zZm9ybVRyYW5zbGF0ZSh0cmFuc2Zvcm0pXG4gICAgICAmJiAodGhpcy50cmFuc2Zvcm0uc2NhbGUgPz8gMSkgPT09ICh0cmFuc2Zvcm0uc2NhbGUgPz8gMSlcbiAgICAgICYmICh0aGlzLnRyYW5zZm9ybS5yb3RhdGUgPz8gMCkgPT09ICh0cmFuc2Zvcm0ucm90YXRlID8/IDApXG4gICAgICAmJiAodGhpcy50cmFuc2Zvcm0uZmxpcEggPz8gZmFsc2UpID09PSAodHJhbnNmb3JtLmZsaXBIID8/IGZhbHNlKVxuICAgICAgJiYgKHRoaXMudHJhbnNmb3JtLmZsaXBWID8/IGZhbHNlKSA9PT0gKHRyYW5zZm9ybS5mbGlwViA/PyBmYWxzZSk7XG4gIH1cblxuICBhc3BlY3RSYXRpb0lzQ29ycmVjdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50Q3JvcEFzcGVjdFJhdGlvID0gKHRoaXMuY3JvcHBlci54MiAtIHRoaXMuY3JvcHBlci54MSkgLyAodGhpcy5jcm9wcGVyLnkyIC0gdGhpcy5jcm9wcGVyLnkxKTtcbiAgICByZXR1cm4gY3VycmVudENyb3BBc3BlY3RSYXRpbyA9PT0gdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvO1xuICB9XG5cbiAgcmVzaXplQ3JvcHBlclBvc2l0aW9uKG9sZE1heFNpemU6IERpbWVuc2lvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY3JvcHBlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob2xkTWF4U2l6ZS53aWR0aCAhPT0gdGhpcy5tYXhTaXplIS53aWR0aCB8fCBvbGRNYXhTaXplLmhlaWdodCAhPT0gdGhpcy5tYXhTaXplIS5oZWlnaHQpIHtcbiAgICAgIHRoaXMuY3JvcHBlciA9IHtcbiAgICAgICAgeDE6IHRoaXMuY3JvcHBlci54MSAqIHRoaXMubWF4U2l6ZSEud2lkdGggLyBvbGRNYXhTaXplLndpZHRoLFxuICAgICAgICB4MjogdGhpcy5jcm9wcGVyLngyICogdGhpcy5tYXhTaXplIS53aWR0aCAvIG9sZE1heFNpemUud2lkdGgsXG4gICAgICAgIHkxOiB0aGlzLmNyb3BwZXIueTEgKiB0aGlzLm1heFNpemUhLmhlaWdodCAvIG9sZE1heFNpemUuaGVpZ2h0LFxuICAgICAgICB5MjogdGhpcy5jcm9wcGVyLnkyICogdGhpcy5tYXhTaXplIS5oZWlnaHQgLyBvbGRNYXhTaXplLmhlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBtYXhTaXplQ3JvcHBlclBvc2l0aW9uKCk6IENyb3BwZXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHgxOiAwLFxuICAgICAgeTE6IDAsXG4gICAgICB4MjogdGhpcy5tYXhTaXplIS53aWR0aCxcbiAgICAgIHkyOiB0aGlzLm1heFNpemUhLmhlaWdodFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -406,16 +406,20 @@ export class ImageCropperComponent {
406
406
  }
407
407
  return null;
408
408
  }
409
+ resetCropperPosition() {
410
+ this.state.cropper = checkCropperPosition(this.state.maxSizeCropperPosition(), this.state, true);
411
+ this.cropperChange.emit(this.state.cropper);
412
+ }
409
413
  ngOnDestroy() {
410
414
  this.pinchStart$.complete();
411
415
  }
412
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageCropperComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
413
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageCropperComponent, isStandalone: true, selector: "image-cropper", inputs: { imageChangedEvent: "imageChangedEvent", imageURL: "imageURL", imageBase64: "imageBase64", imageFile: "imageFile", imageAltText: "imageAltText", options: "options", cropperFrameAriaLabel: "cropperFrameAriaLabel", output: "output", format: "format", autoCrop: "autoCrop", cropper: "cropper", transform: "transform", maintainAspectRatio: "maintainAspectRatio", aspectRatio: "aspectRatio", resetCropOnAspectRatioChange: "resetCropOnAspectRatioChange", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight", cropperMinWidth: "cropperMinWidth", cropperMinHeight: "cropperMinHeight", cropperMaxHeight: "cropperMaxHeight", cropperMaxWidth: "cropperMaxWidth", cropperStaticWidth: "cropperStaticWidth", cropperStaticHeight: "cropperStaticHeight", canvasRotation: "canvasRotation", initialStepSize: "initialStepSize", roundCropper: "roundCropper", onlyScaleDown: "onlyScaleDown", imageQuality: "imageQuality", backgroundColor: "backgroundColor", containWithinAspectRatio: "containWithinAspectRatio", hideResizeSquares: "hideResizeSquares", allowMoveImage: "allowMoveImage", checkImageType: "checkImageType", alignImage: "alignImage", disabled: "disabled", hidden: "hidden" }, outputs: { imageCropped: "imageCropped", startCropImage: "startCropImage", imageLoaded: "imageLoaded", cropperReady: "cropperReady", loadImageFailed: "loadImageFailed", transformChange: "transformChange", cropperChange: "cropperChange" }, host: { listeners: { "window:resize": "onResize()" }, properties: { "class.disabled": "this.disabled", "class.ngx-ic-hidden": "this.hidden", "style.text-align": "this.alignImageStyle" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, static: true }, { propertyName: "sourceImage", first: true, predicate: ["sourceImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n [style.background]=\"imageVisible && state.options.backgroundColor\"\n (touchstart)=\"startPinch($event)\"\n>\n <img\n #sourceImage\n class=\"ngx-ic-source-image\"\n role=\"presentation\"\n *ngIf=\"safeImgDataUrl() as src\"\n [src]=\"src\"\n [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n [style.transform]=\"safeTransformStyle\"\n [class.ngx-ic-draggable]=\"!disabled && allowMoveImage\"\n [attr.alt]=\"imageAltText\"\n (load)=\"imageLoadedInView()\"\n (mousedown)=\"startMove($event, moveTypes.Drag)\"\n (touchstart)=\"startMove($event, moveTypes.Drag)\"\n (error)=\"loadImageError($event)\"\n >\n <div\n class=\"ngx-ic-overlay\"\n [style.width.px]=\"state.maxSize?.width || 0\"\n [style.height.px]=\"state.maxSize?.height || 0\"\n [style.margin-left]=\"alignImage === 'center' ? marginLeft : null\"\n ></div>\n <div\n class=\"ngx-ic-cropper\"\n *ngIf=\"imageVisible\"\n [class.ngx-ic-round]=\"state.options.roundCropper\"\n [attr.aria-label]=\"state.options.cropperFrameAriaLabel\"\n [style.top.px]=\"state.cropper.y1\"\n [style.left.px]=\"state.cropper.x1\"\n [style.width.px]=\"state.cropper.x2 - state.cropper.x1\"\n [style.height.px]=\"state.cropper.y2 - state.cropper.y1\"\n [style.margin-left]=\"state.options.alignImage === 'center' ? marginLeft : null\"\n [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n (keydown)=\"keyboardAccess($event)\"\n tabindex=\"0\"\n >\n <div\n (mousedown)=\"startMove($event, moveTypes.Move)\"\n (touchstart)=\"startMove($event, moveTypes.Move)\"\n class=\"ngx-ic-move\"\n role=\"presentation\">\n </div>\n <ng-container\n *ngIf=\"!state.options.hideResizeSquares && !(state.options.cropperStaticWidth && state.options.cropperStaticHeight)\">\n <span\n class=\"ngx-ic-resize ngx-ic-topleft\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-top\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-topright\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'topright')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'topright')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-right\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-bottomright\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-bottom\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-bottomleft\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-left\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-top\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'top')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'top')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-right\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'right')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'right')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-bottom\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-left\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'left')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'left')\"\n ></span>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;position:relative;width:100%;max-width:100%;max-height:100%;overflow:hidden;padding:5px;text-align:center}:host>div{width:100%;position:relative}:host>div img.ngx-ic-source-image{max-width:100%;max-height:100%;transform-origin:center}:host>div img.ngx-ic-source-image.ngx-ic-draggable{user-drag:none;-webkit-user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;cursor:grab}:host .ngx-ic-overlay{position:absolute;pointer-events:none;touch-action:none;outline:var(--cropper-overlay-color, white) solid 100vw;top:0;left:0}:host .ngx-ic-cropper{position:absolute;display:flex;color:#53535c;background:transparent;outline:rgba(255,255,255,.3) solid 100vw;outline:var(--cropper-outline-color, rgba(255, 255, 255, .3)) solid 100vw;touch-action:none}@media (orientation: portrait){:host .ngx-ic-cropper{outline-width:100vh}}:host .ngx-ic-cropper:after{position:absolute;content:\"\";inset:0;pointer-events:none;border:dashed 1px;opacity:.75;color:inherit;z-index:1}:host .ngx-ic-cropper .ngx-ic-move{width:100%;cursor:move;border:var(--cropper-move-border, 1px solid rgba(255, 255, 255, .5))}:host .ngx-ic-cropper:focus .ngx-ic-move{border-color:#1e90ff;border-width:2px}:host .ngx-ic-cropper .ngx-ic-resize{position:absolute;display:inline-block;line-height:6px;padding:8px;opacity:.85;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize .ngx-ic-square{display:inline-block;background:#53535c;width:6px;height:6px;border:1px solid rgba(255,255,255,.5);box-sizing:content-box}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topleft{top:-12px;left:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-top{top:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topright{top:-12px;right:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-right{top:calc(50% - 12px);right:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomright{bottom:-12px;right:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottom{bottom:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomleft{bottom:-12px;left:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-left{top:calc(50% - 12px);left:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar{position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-top{top:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-right{top:11px;right:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-bottom{bottom:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-left{top:11px;left:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper.ngx-ic-round{outline-color:transparent}:host .ngx-ic-cropper.ngx-ic-round:after{border-radius:100%;box-shadow:0 0 0 100vw #ffffff4d;box-shadow:0 0 0 100vw var(--cropper-outline-color, rgba(255, 255, 255, .3))}@media (orientation: portrait){:host .ngx-ic-cropper.ngx-ic-round:after{box-shadow:0 0 0 100vh #ffffff4d;box-shadow:0 0 0 100vh var(--cropper-outline-color, rgba(255, 255, 255, .3))}}:host .ngx-ic-cropper.ngx-ic-round .ngx-ic-move{border-radius:100%}:host.disabled .ngx-ic-cropper .ngx-ic-resize,:host.disabled .ngx-ic-cropper .ngx-ic-resize-bar,:host.disabled .ngx-ic-cropper .ngx-ic-move{display:none}:host.ngx-ic-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
416
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
417
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImageCropperComponent, isStandalone: true, selector: "image-cropper", inputs: { imageChangedEvent: "imageChangedEvent", imageURL: "imageURL", imageBase64: "imageBase64", imageFile: "imageFile", imageAltText: "imageAltText", options: "options", cropperFrameAriaLabel: "cropperFrameAriaLabel", output: "output", format: "format", autoCrop: "autoCrop", cropper: "cropper", transform: "transform", maintainAspectRatio: "maintainAspectRatio", aspectRatio: "aspectRatio", resetCropOnAspectRatioChange: "resetCropOnAspectRatioChange", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight", cropperMinWidth: "cropperMinWidth", cropperMinHeight: "cropperMinHeight", cropperMaxHeight: "cropperMaxHeight", cropperMaxWidth: "cropperMaxWidth", cropperStaticWidth: "cropperStaticWidth", cropperStaticHeight: "cropperStaticHeight", canvasRotation: "canvasRotation", initialStepSize: "initialStepSize", roundCropper: "roundCropper", onlyScaleDown: "onlyScaleDown", imageQuality: "imageQuality", backgroundColor: "backgroundColor", containWithinAspectRatio: "containWithinAspectRatio", hideResizeSquares: "hideResizeSquares", allowMoveImage: "allowMoveImage", checkImageType: "checkImageType", alignImage: "alignImage", disabled: "disabled", hidden: "hidden" }, outputs: { imageCropped: "imageCropped", startCropImage: "startCropImage", imageLoaded: "imageLoaded", cropperReady: "cropperReady", loadImageFailed: "loadImageFailed", transformChange: "transformChange", cropperChange: "cropperChange" }, host: { listeners: { "window:resize": "onResize()" }, properties: { "class.disabled": "this.disabled", "class.ngx-ic-hidden": "this.hidden", "style.text-align": "this.alignImageStyle" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, static: true }, { propertyName: "sourceImage", first: true, predicate: ["sourceImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n [style.background]=\"imageVisible && state.options.backgroundColor\"\n (touchstart)=\"startPinch($event)\"\n>\n <img\n #sourceImage\n class=\"ngx-ic-source-image\"\n role=\"presentation\"\n *ngIf=\"safeImgDataUrl() as src\"\n [src]=\"src\"\n [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n [style.transform]=\"safeTransformStyle\"\n [class.ngx-ic-draggable]=\"!disabled && allowMoveImage\"\n [attr.alt]=\"imageAltText\"\n (load)=\"imageLoadedInView()\"\n (mousedown)=\"startMove($event, moveTypes.Drag)\"\n (touchstart)=\"startMove($event, moveTypes.Drag)\"\n (error)=\"loadImageError($event)\"\n >\n <div\n class=\"ngx-ic-overlay\"\n [style.width.px]=\"state.maxSize?.width || 0\"\n [style.height.px]=\"state.maxSize?.height || 0\"\n [style.margin-left]=\"alignImage === 'center' ? marginLeft : null\"\n ></div>\n <div\n class=\"ngx-ic-cropper\"\n *ngIf=\"imageVisible\"\n [class.ngx-ic-round]=\"state.options.roundCropper\"\n [attr.aria-label]=\"state.options.cropperFrameAriaLabel\"\n [style.top.px]=\"state.cropper.y1\"\n [style.left.px]=\"state.cropper.x1\"\n [style.width.px]=\"state.cropper.x2 - state.cropper.x1\"\n [style.height.px]=\"state.cropper.y2 - state.cropper.y1\"\n [style.margin-left]=\"state.options.alignImage === 'center' ? marginLeft : null\"\n [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n (keydown)=\"keyboardAccess($event)\"\n tabindex=\"0\"\n >\n <div\n (mousedown)=\"startMove($event, moveTypes.Move)\"\n (touchstart)=\"startMove($event, moveTypes.Move)\"\n class=\"ngx-ic-move\"\n role=\"presentation\">\n </div>\n <ng-container\n *ngIf=\"!state.options.hideResizeSquares && !(state.options.cropperStaticWidth && state.options.cropperStaticHeight)\">\n <span\n class=\"ngx-ic-resize ngx-ic-topleft\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-top\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-topright\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'topright')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'topright')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-right\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-bottomright\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-bottom\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-bottomleft\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-left\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-top\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'top')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'top')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-right\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'right')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'right')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-bottom\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-left\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'left')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'left')\"\n ></span>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;position:relative;width:100%;max-width:100%;max-height:100%;overflow:hidden;padding:5px;text-align:center}:host>div{width:100%;position:relative}:host>div img.ngx-ic-source-image{max-width:100%;max-height:100%;transform-origin:center}:host>div img.ngx-ic-source-image.ngx-ic-draggable{user-drag:none;-webkit-user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;cursor:grab}:host .ngx-ic-overlay{position:absolute;pointer-events:none;touch-action:none;outline:var(--cropper-overlay-color, white) solid 100vw;top:0;left:0}:host .ngx-ic-cropper{position:absolute;display:flex;color:#53535c;background:transparent;outline:rgba(255,255,255,.3) solid 100vw;outline:var(--cropper-outline-color, rgba(255, 255, 255, .3)) solid 100vw;touch-action:none}@media (orientation: portrait){:host .ngx-ic-cropper{outline-width:100vh}}:host .ngx-ic-cropper:after{position:absolute;content:\"\";inset:0;pointer-events:none;border:dashed 1px;opacity:.75;color:inherit;z-index:1}:host .ngx-ic-cropper .ngx-ic-move{width:100%;cursor:move;border:var(--cropper-move-border, 1px solid rgba(255, 255, 255, .5))}:host .ngx-ic-cropper:focus .ngx-ic-move{border-color:#1e90ff;border-width:2px}:host .ngx-ic-cropper .ngx-ic-resize{position:absolute;display:inline-block;line-height:6px;padding:8px;opacity:.85;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize .ngx-ic-square{display:inline-block;background:#53535c;width:6px;height:6px;border:1px solid rgba(255,255,255,.5);box-sizing:content-box}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topleft{top:-12px;left:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-top{top:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topright{top:-12px;right:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-right{top:calc(50% - 12px);right:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomright{bottom:-12px;right:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottom{bottom:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomleft{bottom:-12px;left:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-left{top:calc(50% - 12px);left:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar{position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-top{top:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-right{top:11px;right:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-bottom{bottom:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-left{top:11px;left:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper.ngx-ic-round{outline-color:transparent}:host .ngx-ic-cropper.ngx-ic-round:after{border-radius:100%;box-shadow:0 0 0 100vw #ffffff4d;box-shadow:0 0 0 100vw var(--cropper-outline-color, rgba(255, 255, 255, .3))}@media (orientation: portrait){:host .ngx-ic-cropper.ngx-ic-round:after{box-shadow:0 0 0 100vh #ffffff4d;box-shadow:0 0 0 100vh var(--cropper-outline-color, rgba(255, 255, 255, .3))}}:host .ngx-ic-cropper.ngx-ic-round .ngx-ic-move{border-radius:100%}:host.disabled .ngx-ic-cropper .ngx-ic-resize,:host.disabled .ngx-ic-cropper .ngx-ic-resize-bar,:host.disabled .ngx-ic-cropper .ngx-ic-move{display:none}:host.ngx-ic-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
414
418
  }
415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageCropperComponent, decorators: [{
419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperComponent, decorators: [{
416
420
  type: Component,
417
421
  args: [{ selector: 'image-cropper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf], template: "<div\n [style.background]=\"imageVisible && state.options.backgroundColor\"\n (touchstart)=\"startPinch($event)\"\n>\n <img\n #sourceImage\n class=\"ngx-ic-source-image\"\n role=\"presentation\"\n *ngIf=\"safeImgDataUrl() as src\"\n [src]=\"src\"\n [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n [style.transform]=\"safeTransformStyle\"\n [class.ngx-ic-draggable]=\"!disabled && allowMoveImage\"\n [attr.alt]=\"imageAltText\"\n (load)=\"imageLoadedInView()\"\n (mousedown)=\"startMove($event, moveTypes.Drag)\"\n (touchstart)=\"startMove($event, moveTypes.Drag)\"\n (error)=\"loadImageError($event)\"\n >\n <div\n class=\"ngx-ic-overlay\"\n [style.width.px]=\"state.maxSize?.width || 0\"\n [style.height.px]=\"state.maxSize?.height || 0\"\n [style.margin-left]=\"alignImage === 'center' ? marginLeft : null\"\n ></div>\n <div\n class=\"ngx-ic-cropper\"\n *ngIf=\"imageVisible\"\n [class.ngx-ic-round]=\"state.options.roundCropper\"\n [attr.aria-label]=\"state.options.cropperFrameAriaLabel\"\n [style.top.px]=\"state.cropper.y1\"\n [style.left.px]=\"state.cropper.x1\"\n [style.width.px]=\"state.cropper.x2 - state.cropper.x1\"\n [style.height.px]=\"state.cropper.y2 - state.cropper.y1\"\n [style.margin-left]=\"state.options.alignImage === 'center' ? marginLeft : null\"\n [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n (keydown)=\"keyboardAccess($event)\"\n tabindex=\"0\"\n >\n <div\n (mousedown)=\"startMove($event, moveTypes.Move)\"\n (touchstart)=\"startMove($event, moveTypes.Move)\"\n class=\"ngx-ic-move\"\n role=\"presentation\">\n </div>\n <ng-container\n *ngIf=\"!state.options.hideResizeSquares && !(state.options.cropperStaticWidth && state.options.cropperStaticHeight)\">\n <span\n class=\"ngx-ic-resize ngx-ic-topleft\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-top\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-topright\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'topright')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'topright')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-right\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-bottomright\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-bottom\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize ngx-ic-bottomleft\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n >\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span class=\"ngx-ic-resize ngx-ic-left\">\n <span class=\"ngx-ic-square\"></span>\n </span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-top\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'top')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'top')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-right\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'right')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'right')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-bottom\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n ></span>\n <span\n class=\"ngx-ic-resize-bar ngx-ic-left\"\n role=\"presentation\"\n (mousedown)=\"startMove($event, moveTypes.Resize, 'left')\"\n (touchstart)=\"startMove($event, moveTypes.Resize, 'left')\"\n ></span>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;position:relative;width:100%;max-width:100%;max-height:100%;overflow:hidden;padding:5px;text-align:center}:host>div{width:100%;position:relative}:host>div img.ngx-ic-source-image{max-width:100%;max-height:100%;transform-origin:center}:host>div img.ngx-ic-source-image.ngx-ic-draggable{user-drag:none;-webkit-user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;cursor:grab}:host .ngx-ic-overlay{position:absolute;pointer-events:none;touch-action:none;outline:var(--cropper-overlay-color, white) solid 100vw;top:0;left:0}:host .ngx-ic-cropper{position:absolute;display:flex;color:#53535c;background:transparent;outline:rgba(255,255,255,.3) solid 100vw;outline:var(--cropper-outline-color, rgba(255, 255, 255, .3)) solid 100vw;touch-action:none}@media (orientation: portrait){:host .ngx-ic-cropper{outline-width:100vh}}:host .ngx-ic-cropper:after{position:absolute;content:\"\";inset:0;pointer-events:none;border:dashed 1px;opacity:.75;color:inherit;z-index:1}:host .ngx-ic-cropper .ngx-ic-move{width:100%;cursor:move;border:var(--cropper-move-border, 1px solid rgba(255, 255, 255, .5))}:host .ngx-ic-cropper:focus .ngx-ic-move{border-color:#1e90ff;border-width:2px}:host .ngx-ic-cropper .ngx-ic-resize{position:absolute;display:inline-block;line-height:6px;padding:8px;opacity:.85;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize .ngx-ic-square{display:inline-block;background:#53535c;width:6px;height:6px;border:1px solid rgba(255,255,255,.5);box-sizing:content-box}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topleft{top:-12px;left:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-top{top:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topright{top:-12px;right:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-right{top:calc(50% - 12px);right:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomright{bottom:-12px;right:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottom{bottom:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomleft{bottom:-12px;left:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-left{top:calc(50% - 12px);left:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar{position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-top{top:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-right{top:11px;right:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-bottom{bottom:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-left{top:11px;left:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper.ngx-ic-round{outline-color:transparent}:host .ngx-ic-cropper.ngx-ic-round:after{border-radius:100%;box-shadow:0 0 0 100vw #ffffff4d;box-shadow:0 0 0 100vw var(--cropper-outline-color, rgba(255, 255, 255, .3))}@media (orientation: portrait){:host .ngx-ic-cropper.ngx-ic-round:after{box-shadow:0 0 0 100vh #ffffff4d;box-shadow:0 0 0 100vh var(--cropper-outline-color, rgba(255, 255, 255, .3))}}:host .ngx-ic-cropper.ngx-ic-round .ngx-ic-move{border-radius:100%}:host.disabled .ngx-ic-cropper .ngx-ic-resize,:host.disabled .ngx-ic-cropper .ngx-ic-resize-bar,:host.disabled .ngx-ic-cropper .ngx-ic-move{display:none}:host.ngx-ic-hidden{display:none}\n"] }]
418
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { wrapper: [{
422
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { wrapper: [{
419
423
  type: ViewChild,
420
424
  args: ['wrapper', { static: true }]
421
425
  }], sourceImage: [{
@@ -520,4 +524,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
520
524
  type: HostListener,
521
525
  args: ['window:resize']
522
526
  }] } });
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvbGliL2NvbXBvbmVudC9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy9saWIvY29tcG9uZW50L2ltYWdlLWNyb3BwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBWXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUseUJBQXlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQiwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNkLE1BQU0saUNBQWlDLENBQUM7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QUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxRQUFRO3NCQURoQixXQUFXO3VCQUFDLGdCQUFnQjs7c0JBQzVCLEtBQUs7Z0JBRUcsTUFBTTtzQkFEZCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFHSCxlQUFlO3NCQURsQixXQUFXO3VCQUFDLGtCQUFrQjtnQkErSy9CLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVN0eWxlLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICBDcm9wcGVyT3B0aW9ucyxcbiAgQ3JvcHBlclBvc2l0aW9uLFxuICBEaW1lbnNpb25zLFxuICBJbWFnZUNyb3BwZWRFdmVudCxcbiAgSW1hZ2VUcmFuc2Zvcm0sXG4gIExvYWRlZEltYWdlLFxuICBNb3ZlU3RhcnRcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPdXRwdXRGb3JtYXQsIE91dHB1dFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nyb3BwZXItb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3JvcHBlclN0YXRlIH0gZnJvbSAnLi9jcm9wcGVyLnN0YXRlJztcbmltcG9ydCB7IE1vdmVUeXBlcywgUG9zaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL21vdmUtc3RhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENyb3BTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY3JvcC5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRJbWFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2FkLWltYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0RXZlbnRGb3JLZXksIGdldEludmVydGVkUG9zaXRpb25Gb3JLZXksIGdldFBvc2l0aW9uRm9yS2V5IH0gZnJvbSAnLi4vdXRpbHMva2V5Ym9hcmQudXRpbHMnO1xuaW1wb3J0IHsgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFzaWNFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzaWMtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoZWNrQ3JvcHBlclBvc2l0aW9uLFxuICBjaGVja0Nyb3BwZXJXaXRoaW5NYXhTaXplQm91bmRzLFxuICBnZXRDbGllbnRYLFxuICBnZXRDbGllbnRZLFxuICBtb3ZlQ3JvcHBlcixcbiAgcmVzaXplQ3JvcHBlclxufSBmcm9tICcuLi91dGlscy9jcm9wcGVyLXBvc2l0aW9uLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1hZ2UtY3JvcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWZdLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNyb3BwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBpbmNoU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjcm9wU2VydmljZSA9IG5ldyBDcm9wU2VydmljZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRJbWFnZVNlcnZpY2UgPSBuZXcgTG9hZEltYWdlU2VydmljZSgpO1xuXG4gIHByaXZhdGUgc2V0SW1hZ2VNYXhTaXplUmV0cmllcyA9IDA7XG4gIHByaXZhdGUgbW92ZVN0YXJ0PzogTW92ZVN0YXJ0O1xuICBwcml2YXRlIHJlc2l6ZWRXaGlsZUhpZGRlbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtb3ZlVHlwZXMgPSBNb3ZlVHlwZXM7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGF0ZSA9IG5ldyBDcm9wcGVyU3RhdGUoKTtcblxuICByZWFkb25seSBzYWZlSW1nRGF0YVVybCA9IHNpZ25hbDxTYWZlVXJsIHwgc3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBzYWZlVHJhbnNmb3JtU3R5bGU/OiBTYWZlU3R5bGUgfCBzdHJpbmc7XG4gIG1hcmdpbkxlZnQ6IFNhZmVTdHlsZSB8IHN0cmluZyA9ICcwcHgnO1xuICBpbWFnZVZpc2libGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywge3N0YXRpYzogdHJ1ZX0pIHdyYXBwZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc291cmNlSW1hZ2UnLCB7c3RhdGljOiBmYWxzZX0pIHNvdXJjZUltYWdlITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQElucHV0KCkgaW1hZ2VDaGFuZ2VkRXZlbnQ/OiBFdmVudCB8IG51bGw7XG4gIEBJbnB1dCgpIGltYWdlVVJMPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbWFnZUJhc2U2ND86IHN0cmluZztcbiAgQElucHV0KCkgaW1hZ2VGaWxlPzogRmlsZTtcbiAgQElucHV0KCkgaW1hZ2VBbHRUZXh0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBQYXJ0aWFsPENyb3BwZXJPcHRpb25zPjtcbiAgQElucHV0KCkgY3JvcHBlckZyYW1lQXJpYUxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvdXRwdXQ/OiAnYmxvYicgfCAnYmFzZTY0JztcbiAgQElucHV0KCkgZm9ybWF0PzogT3V0cHV0Rm9ybWF0O1xuICBASW5wdXQoKSBhdXRvQ3JvcD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNyb3BwZXI/OiBDcm9wcGVyUG9zaXRpb247XG4gIEBJbnB1dCgpIHRyYW5zZm9ybT86IEltYWdlVHJhbnNmb3JtO1xuICBASW5wdXQoKSBtYWludGFpbkFzcGVjdFJhdGlvPzogYm9vbGVhbjtcbiAgQElucHV0KCkgYXNwZWN0UmF0aW8/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJlc2V0Q3JvcE9uQXNwZWN0UmF0aW9DaGFuZ2U/OiBib29sZWFuO1xuICBASW5wdXQoKSByZXNpemVUb1dpZHRoPzogbnVtYmVyO1xuICBASW5wdXQoKSByZXNpemVUb0hlaWdodD86IG51bWJlcjtcbiAgQElucHV0KCkgY3JvcHBlck1pbldpZHRoPzogbnVtYmVyO1xuICBASW5wdXQoKSBjcm9wcGVyTWluSGVpZ2h0PzogbnVtYmVyO1xuICBASW5wdXQoKSBjcm9wcGVyTWF4SGVpZ2h0PzogbnVtYmVyO1xuICBASW5wdXQoKSBjcm9wcGVyTWF4V2lkdGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNyb3BwZXJTdGF0aWNXaWR0aD86IG51bWJlcjtcbiAgQElucHV0KCkgY3JvcHBlclN0YXRpY0hlaWdodD86IG51bWJlcjtcbiAgQElucHV0KCkgY2FudmFzUm90YXRpb24/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGluaXRpYWxTdGVwU2l6ZT86IG51bWJlcjtcbiAgQElucHV0KCkgcm91bmRDcm9wcGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgb25seVNjYWxlRG93bj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGltYWdlUXVhbGl0eT86IG51bWJlcjtcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBjb250YWluV2l0aGluQXNwZWN0UmF0aW8/OiBib29sZWFuO1xuICBASW5wdXQoKSBoaWRlUmVzaXplU3F1YXJlcz86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFsbG93TW92ZUltYWdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNoZWNrSW1hZ2VUeXBlID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxpZ25JbWFnZT86ICdsZWZ0JyB8ICdjZW50ZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1pYy1oaWRkZW4nKVxuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgaW1hZ2VDcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbWFnZUNyb3BwZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0Q3JvcEltYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgaW1hZ2VMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExvYWRlZEltYWdlPigpO1xuICBAT3V0cHV0KCkgY3JvcHBlclJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxEaW1lbnNpb25zPigpO1xuICBAT3V0cHV0KCkgbG9hZEltYWdlRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdHJhbnNmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJbWFnZVRyYW5zZm9ybT4oKTtcbiAgQE91dHB1dCgpIGNyb3BwZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENyb3BwZXJQb3NpdGlvbj4oKTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRleHQtYWxpZ24nKVxuICBnZXQgYWxpZ25JbWFnZVN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLm9wdGlvbnMuYWxpZ25JbWFnZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5zdGVwU2l6ZSA9IHRoaXMuaW5pdGlhbFN0ZXBTaXplIHx8IHRoaXMuc3RhdGUuc3RlcFNpemU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNDcm9wcGVyUG9zaXRpb24gPSB0aGlzLnN0YXRlLmNyb3BwZXI7XG4gICAgY29uc3QgcHJldmlvdXNUcmFuc2Zvcm0gPSB0aGlzLnN0YXRlLnRyYW5zZm9ybTtcbiAgICBjb25zdCBwcmV2aW91c0JhY2tncm91bmRDb2xvciA9IHRoaXMuc3RhdGUub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I7XG5cbiAgICB0aGlzLnN0YXRlLnNldE9wdGlvbnNGcm9tQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB0aGlzLm9uQ2hhbmdlc0lucHV0SW1hZ2UoY2hhbmdlcyk7XG5cbiAgICBpZiAoY2hhbmdlc1sndHJhbnNmb3JtJ10gJiYgdGhpcy50cmFuc2Zvcm0pIHtcbiAgICAgIHRoaXMuc3RhdGUudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm07XG4gICAgICB0aGlzLnNldENzc1RyYW5zZm9ybSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zdGF0ZS5sb2FkZWRJbWFnZT8udHJhbnNmb3JtZWQuaW1hZ2UuY29tcGxldGUgfHwgIXRoaXMuc3RhdGUubWF4U2l6ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgodGhpcy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8gJiYgY2hhbmdlc1snYXNwZWN0UmF0aW8nXSkgfHwgY2hhbmdlc1snY29udGFpbldpdGhpbkFzcGVjdFJhdGlvJ10gfHwgY2hhbmdlc1snY2FudmFzUm90YXRpb24nXSkge1xuICAgICAgdGhpcy5sb2FkSW1hZ2VTZXJ2aWNlXG4gICAgICAgIC50cmFuc2Zvcm1Mb2FkZWRJbWFnZSh0aGlzLnN0YXRlLmxvYWRlZEltYWdlLCB0aGlzLnN0YXRlKVxuICAgICAgICAudGhlbigocmVzKSA9PiB0aGlzLnNldExvYWRlZEltYWdlKHJlcykpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB0aGlzLmxvYWRJbWFnZUVycm9yKGVycikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjcm9wcGVyJ10gJiYgdGhpcy5jcm9wcGVyKSB7XG4gICAgICB0aGlzLnN0YXRlLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJQb3NpdGlvbih0aGlzLmNyb3BwZXIsIHRoaXMuc3RhdGUsIHRydWUpO1xuICAgIH1cbiAgICBjb25zdCBjcm9wcGVyQ2hhbmdlZCA9ICF0aGlzLnN0YXRlLmVxdWFsc0Nyb3BwZXJQb3NpdGlvbihwcmV2aW91c0Nyb3BwZXJQb3NpdGlvbik7XG4gICAgaWYgKGNyb3BwZXJDaGFuZ2VkICYmICghdGhpcy5jcm9wcGVyIHx8ICF0aGlzLnN0YXRlLmVxdWFsc0Nyb3BwZXJQb3NpdGlvbih0aGlzLmNyb3BwZXIpKSkge1xuICAgICAgdGhpcy5jcm9wcGVyQ2hhbmdlLmVtaXQodGhpcy5zdGF0ZS5jcm9wcGVyKTtcbiAgICB9XG4gICAgaWYgKGNyb3BwZXJDaGFuZ2VkXG4gICAgICB8fCAhdGhpcy5zdGF0ZS5lcXVhbHNUcmFuc2Zvcm0ocHJldmlvdXNUcmFuc2Zvcm0pXG4gICAgICB8fCB0aGlzLnN0YXRlLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yICE9PSBwcmV2aW91c0JhY2tncm91bmRDb2xvcikge1xuICAgICAgdGhpcy5kb0F1dG9Dcm9wKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2hpZGRlbiddICYmIHRoaXMucmVzaXplZFdoaWxlSGlkZGVuICYmICF0aGlzLmhpZGRlbikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgICAgdGhpcy5yZXNpemVkV2hpbGVIaWRkZW4gPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VzSW5wdXRJbWFnZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2ltYWdlQ2hhbmdlZEV2ZW50J10gfHwgY2hhbmdlc1snaW1hZ2VVUkwnXSB8fCBjaGFuZ2VzWydpbWFnZUJhc2U2NCddIHx8IGNoYW5nZXNbJ2ltYWdlRmlsZSddKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUNoYW5nZWRFdmVudCddICYmIHRoaXMuaXNWYWxpZEltYWdlQ2hhbmdlZEV2ZW50KCkpIHtcbiAgICAgIHRoaXMubG9hZEltYWdlRmlsZSh0aGlzLmltYWdlQ2hhbmdlZEV2ZW50LnRhcmdldC5maWxlc1swXSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbWFnZVVSTCddICYmIHRoaXMuaW1hZ2VVUkwpIHtcbiAgICAgIHRoaXMubG9hZEltYWdlRnJvbVVSTCh0aGlzLmltYWdlVVJMKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2ltYWdlQmFzZTY0J10gJiYgdGhpcy5pbWFnZUJhc2U2NCkge1xuICAgICAgdGhpcy5sb2FkQmFzZTY0SW1hZ2UodGhpcy5pbWFnZUJhc2U2NCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUZpbGUnXSAmJiB0aGlzLmltYWdlRmlsZSkge1xuICAgICAgdGhpcy5sb2FkSW1hZ2VGaWxlKHRoaXMuaW1hZ2VGaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRJbWFnZUNoYW5nZWRFdmVudCgpOiB0aGlzIGlzIHtcbiAgICBpbWFnZUNoYW5nZWRFdmVudDogRXZlbnQgJiB7XG4gICAgICB0YXJnZXQ6IHsgZmlsZXM6IEZpbGVMaXN0IH07XG4gICAgfVxuICB9IHtcbiAgICBjb25zdCBmaWxlcyA9ICh0aGlzLmltYWdlQ2hhbmdlZEV2ZW50IGFzIGFueSk/LnRhcmdldD8uZmlsZXM7XG4gICAgcmV0dXJuIGZpbGVzIGluc3RhbmNlb2YgRmlsZUxpc3QgJiYgZmlsZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zYWZlSW1nRGF0YVVybC5zZXQoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnJ1xuICAgICAgKyAnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFDMGxFUVZRWVYyTmdBQUlBQUFVJ1xuICAgICAgKyAnQUFhclZ5RkVBQUFBQVNVVk9SSzVDWUlJPScpO1xuICAgIHRoaXMuc3RhdGUubG9hZGVkSW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdGF0ZS5tYXhTaXplID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW1hZ2VWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJbWFnZUZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMubG9hZEltYWdlU2VydmljZVxuICAgICAgLmxvYWRJbWFnZUZpbGUoZmlsZSwgdGhpcy5zdGF0ZSlcbiAgICAgIC50aGVuKChyZXMpID0+IHRoaXMuc2V0TG9hZGVkSW1hZ2UocmVzKSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB0aGlzLmxvYWRJbWFnZUVycm9yKGVycikpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQmFzZTY0SW1hZ2UoaW1hZ2VCYXNlNjQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9hZEltYWdlU2VydmljZVxuICAgICAgLmxvYWRCYXNlNjRJbWFnZShpbWFnZUJhc2U2NCwgdGhpcy5zdGF0ZSlcbiAgICAgIC50aGVuKChyZXMpID0+IHRoaXMuc2V0TG9hZGVkSW1hZ2UocmVzKSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB0aGlzLmxvYWRJbWFnZUVycm9yKGVycikpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSW1hZ2VGcm9tVVJMKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkSW1hZ2VTZXJ2aWNlXG4gICAgICAubG9hZEltYWdlRnJvbVVSTCh1cmwsIHRoaXMuc3RhdGUpXG4gICAgICAudGhlbigocmVzKSA9PiB0aGlzLnNldExvYWRlZEltYWdlKHJlcykpXG4gICAgICAuY2F0Y2goKGVycikgPT4gdGhpcy5sb2FkSW1hZ2VFcnJvcihlcnIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TG9hZGVkSW1hZ2UobG9hZGVkSW1hZ2U6IExvYWRlZEltYWdlKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5sb2FkZWRJbWFnZSA9IGxvYWRlZEltYWdlO1xuICAgIHRoaXMuc2FmZUltZ0RhdGFVcmwuc2V0KHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5vYmplY3RVcmwpKTtcbiAgfVxuXG4gIGxvYWRJbWFnZUVycm9yKGVycm9yOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgdGhpcy5sb2FkSW1hZ2VGYWlsZWQuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDc3NUcmFuc2Zvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNsYXRlVW5pdCA9IHRoaXMuc3RhdGUudHJhbnNmb3JtPy50cmFuc2xhdGVVbml0IHx8ICclJztcbiAgICB0aGlzLnNhZmVUcmFuc2Zvcm1TdHlsZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShcbiAgICAgIGB0cmFuc2xhdGUoJHt0aGlzLnN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVIIHx8IDB9JHt0cmFuc2xhdGVVbml0fSwgJHt0aGlzLnN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVWIHx8IDB9JHt0cmFuc2xhdGVVbml0fSlgICtcbiAgICAgICcgc2NhbGVYKCcgKyAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uZmxpcEggPyAtMSA6IDEpICsgJyknICtcbiAgICAgICcgc2NhbGVZKCcgKyAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uZmxpcFYgPyAtMSA6IDEpICsgJyknICtcbiAgICAgICcgcm90YXRlKCcgKyAodGhpcy5zdGF0ZS50cmFuc2Zvcm0ucm90YXRlIHx8IDApICsgJ2RlZyknXG4gICAgKTtcbiAgfVxuXG4gIGltYWdlTG9hZGVkSW5WaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlLmxvYWRlZEltYWdlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaW1hZ2VMb2FkZWQuZW1pdCh0aGlzLnN0YXRlLmxvYWRlZEltYWdlKTtcbiAgICAgIHRoaXMuc2V0SW1hZ2VNYXhTaXplUmV0cmllcyA9IDA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tJbWFnZU1heFNpemVSZWN1cnNpdmVseSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSW1hZ2VNYXhTaXplUmVjdXJzaXZlbHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0SW1hZ2VNYXhTaXplUmV0cmllcyA+IDQwKSB7XG4gICAgICB0aGlzLmxvYWRJbWFnZUZhaWxlZC5lbWl0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNvdXJjZUltYWdlTG9hZGVkKCkpIHtcbiAgICAgIHRoaXMuc2V0TWF4U2l6ZSgpO1xuICAgICAgaWYgKHRoaXMuY3JvcHBlciAmJiAoIXRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpbyB8fCB0aGlzLnN0YXRlLmFzcGVjdFJhdGlvSXNDb3JyZWN0KCkpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuY3JvcHBlciA9IGNoZWNrQ3JvcHBlclBvc2l0aW9uKHRoaXMuY3JvcHBlciwgdGhpcy5zdGF0ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZW1pdENyb3BwZXJQb3NpdGlvbkNoYW5nZSh0aGlzLmNyb3BwZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5jcm9wcGVyID0gY2hlY2tDcm9wcGVyUG9zaXRpb24odGhpcy5zdGF0ZS5tYXhTaXplQ3JvcHBlclBvc2l0aW9uKCksIHRoaXMuc3RhdGUsIHRydWUpO1xuICAgICAgICB0aGlzLmNyb3BwZXJDaGFuZ2UuZW1pdCh0aGlzLnN0YXRlLmNyb3BwZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbWFnZVZpc2libGUgPSB0cnVlO1xuICAgICAgdGhpcy5jcm9wcGVyUmVhZHkuZW1pdCh7Li4udGhpcy5zdGF0ZS5tYXhTaXplIX0pO1xuICAgICAgdGhpcy5kb0F1dG9Dcm9wKCk7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEltYWdlTWF4U2l6ZVJldHJpZXMrKztcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja0ltYWdlTWF4U2l6ZVJlY3Vyc2l2ZWx5KCksIDUwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvdXJjZUltYWdlTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUltYWdlPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA+IDE7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmxvYWRlZEltYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmhpZGRlbikge1xuICAgICAgdGhpcy5yZXNpemVkV2hpbGVIaWRkZW4gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvbGRNYXhTaXplID0gey4uLnRoaXMuc3RhdGUubWF4U2l6ZSF9O1xuICAgICAgdGhpcy5zZXRNYXhTaXplKCk7XG4gICAgICB0aGlzLnN0YXRlLnJlc2l6ZUNyb3BwZXJQb3NpdGlvbihvbGRNYXhTaXplKTtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAga2V5Ym9hcmRBY2Nlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmNoYW5nZUtleWJvYXJkU3RlcFNpemUoZXZlbnQpO1xuICAgIHRoaXMua2V5Ym9hcmRNb3ZlQ3JvcHBlcihldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUtleWJvYXJkU3RlcFNpemUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSArZXZlbnQua2V5O1xuICAgIGlmIChrZXkgPj0gMSAmJiBrZXkgPD0gOSkge1xuICAgICAgdGhpcy5zdGF0ZS5zdGVwU2l6ZSA9IGtleTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkTW92ZUNyb3BwZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlib2FyZFdoaXRlTGlzdDogc3RyaW5nW10gPSBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0J107XG4gICAgaWYgKCEoa2V5Ym9hcmRXaGl0ZUxpc3QuaW5jbHVkZXMoZXZlbnQua2V5KSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbW92ZVR5cGUgPSBldmVudC5zaGlmdEtleSA/IE1vdmVUeXBlcy5SZXNpemUgOiBNb3ZlVHlwZXMuTW92ZTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGV2ZW50LmFsdEtleSA/IGdldEludmVydGVkUG9zaXRpb25Gb3JLZXkoZXZlbnQua2V5KSA6IGdldFBvc2l0aW9uRm9yS2V5KGV2ZW50LmtleSk7XG4gICAgY29uc3QgbW92ZUV2ZW50ID0gZ2V0RXZlbnRGb3JLZXkoZXZlbnQua2V5LCB0aGlzLnN0YXRlLnN0ZXBTaXplKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubW92ZVN0YXJ0ID0ge1xuICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgdHlwZTogbW92ZVR5cGUsXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGNsaWVudFg6IDAsXG4gICAgICBjbGllbnRZOiAwLFxuICAgICAgdHJhbnNmb3JtOiB0aGlzLnN0YXRlLnRyYW5zZm9ybSxcbiAgICAgIGNyb3BwZXI6IHRoaXMuc3RhdGUuY3JvcHBlclxuICAgIH07XG4gICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUobW92ZUV2ZW50KTtcbiAgICB0aGlzLmhhbmRsZU1vdXNlVXAoKTtcbiAgfVxuXG4gIHN0YXJ0TW92ZShldmVudDogRXZlbnQgfCBCYXNpY0V2ZW50LCBtb3ZlVHlwZTogTW92ZVR5cGVzLCBwb3NpdGlvbjogUG9zaXRpb24gfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkXG4gICAgICB8fCB0aGlzLm1vdmVTdGFydD8uYWN0aXZlICYmIHRoaXMubW92ZVN0YXJ0Py50eXBlID09PSBNb3ZlVHlwZXMuUGluY2hcbiAgICAgIHx8IG1vdmVUeXBlID09PSBNb3ZlVHlwZXMuRHJhZyAmJiAhdGhpcy5hbGxvd01vdmVJbWFnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoJ3ByZXZlbnREZWZhdWx0JyBpbiBldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5tb3ZlU3RhcnQgPSB7XG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgICB0eXBlOiBtb3ZlVHlwZSxcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgY2xpZW50WDogZ2V0Q2xpZW50WChldmVudCksXG4gICAgICBjbGllbnRZOiBnZXRDbGllbnRZKGV2ZW50KSxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy5zdGF0ZS50cmFuc2Zvcm0sXG4gICAgICBjcm9wcGVyOiB0aGlzLnN0YXRlLmNyb3BwZXJcbiAgICB9O1xuICAgIHRoaXMuaW5pdE1vdXNlTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0TW91c2VNb3ZlKCk6IHZvaWQge1xuICAgIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJyksXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaG1vdmUnKVxuICAgICkucGlwZShcbiAgICAgIHRha2VVbnRpbChtZXJnZShcbiAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2V1cCcpLFxuICAgICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaGVuZCcpLFxuICAgICAgICB0aGlzLnBpbmNoU3RhcnQkXG4gICAgICApLnBpcGUoZmlyc3QoKSkpXG4gICAgKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGV2ZW50KSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUoZXZlbnQpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSksXG4gICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlTW91c2VVcCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBFdmVudCB8IEJhc2ljRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW92ZVN0YXJ0Py5hY3RpdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCdzdG9wUHJvcGFnYXRpb24nIGluIGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKCdwcmV2ZW50RGVmYXVsdCcgaW4gZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vdmVTdGFydC50eXBlID09PSBNb3ZlVHlwZXMuTW92ZSkge1xuICAgICAgdGhpcy5zdGF0ZS5jcm9wcGVyID0gY2hlY2tDcm9wcGVyV2l0aGluTWF4U2l6ZUJvdW5kcyhcbiAgICAgICAgbW92ZUNyb3BwZXIoZXZlbnQsIHRoaXMubW92ZVN0YXJ0KSxcbiAgICAgICAgdGhpcy5zdGF0ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW92ZVN0YXJ0LnR5cGUgPT09IE1vdmVUeXBlcy5SZXNpemUpIHtcbiAgICAgIGlmICghdGhpcy5jcm9wcGVyU3RhdGljV2lkdGggJiYgIXRoaXMuY3JvcHBlclN0YXRpY0hlaWdodCkge1xuICAgICAgICB0aGlzLnN0YXRlLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJXaXRoaW5NYXhTaXplQm91bmRzKFxuICAgICAgICAgIHJlc2l6ZUNyb3BwZXIoZXZlbnQsIHRoaXMubW92ZVN0YXJ0LCB0aGlzLnN0YXRlKSxcbiAgICAgICAgICB0aGlzLnN0YXRlLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vdmVTdGFydC50eXBlID09PSBNb3ZlVHlwZXMuRHJhZykge1xuICAgICAgY29uc3QgZGlmZlggPSBnZXRDbGllbnRYKGV2ZW50KSAtIHRoaXMubW92ZVN0YXJ0LmNsaWVudFg7XG4gICAgICBjb25zdCBkaWZmWSA9IGdldENsaWVudFkoZXZlbnQpIC0gdGhpcy5tb3ZlU3RhcnQuY2xpZW50WTtcbiAgICAgIHRoaXMuc3RhdGUudHJhbnNmb3JtID0ge1xuICAgICAgICAuLi50aGlzLnN0YXRlLnRyYW5zZm9ybSxcbiAgICAgICAgdHJhbnNsYXRlSDogKHRoaXMubW92ZVN0YXJ0LnRyYW5zZm9ybT8udHJhbnNsYXRlSCB8fCAwKSArIGRpZmZYLFxuICAgICAgICB0cmFuc2xhdGVWOiAodGhpcy5tb3ZlU3RhcnQudHJhbnNmb3JtPy50cmFuc2xhdGVWIHx8IDApICsgZGlmZllcbiAgICAgIH07XG4gICAgICB0aGlzLnNldENzc1RyYW5zZm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VVcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW92ZVN0YXJ0Py5hY3RpdmUgfHwgdGhpcy5tb3ZlU3RhcnQ/LnR5cGUgPT09IE1vdmVUeXBlcy5QaW5jaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc3RhdGUuZXF1YWxzQ3JvcHBlclBvc2l0aW9uKHRoaXMubW92ZVN0YXJ0LmNyb3BwZXIpIHx8IHRoaXMubW92ZVN0YXJ0LnRyYW5zZm9ybSAmJiAhdGhpcy5zdGF0ZS5lcXVhbHNUcmFuc2Zvcm0odGhpcy5tb3ZlU3RhcnQudHJhbnNmb3JtKSkge1xuICAgICAgaWYgKHRoaXMubW92ZVN0YXJ0LnR5cGUgPT09IE1vdmVUeXBlcy5EcmFnKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2hhbmdlLmVtaXQodGhpcy5zdGF0ZS50cmFuc2Zvcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcm9wcGVyQ2hhbmdlLmVtaXQodGhpcy5zdGF0ZS5jcm9wcGVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZG9BdXRvQ3JvcCgpO1xuICAgIH1cbiAgICB0aGlzLm1vdmVTdGFydCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXJ0UGluY2goZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zb3VyY2VJbWFnZUxvYWRlZCgpIHx8IGV2ZW50LnRvdWNoZXMubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoJ3ByZXZlbnREZWZhdWx0JyBpbiBldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5tb3ZlU3RhcnQgPSB7XG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgICB0eXBlOiBNb3ZlVHlwZXMuUGluY2gsXG4gICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICBjbGllbnRYOiB0aGlzLnN0YXRlLmNyb3BwZXIueDEgKyAodGhpcy5zdGF0ZS5jcm9wcGVyLngyIC0gdGhpcy5zdGF0ZS5jcm9wcGVyLngxKSAvIDIsXG4gICAgICBjbGllbnRZOiB0aGlzLnN0YXRlLmNyb3BwZXIueTEgKyAodGhpcy5zdGF0ZS5jcm9wcGVyLnkyIC0gdGhpcy5zdGF0ZS5jcm9wcGVyLnkxKSAvIDIsXG4gICAgICBjcm9wcGVyOiB0aGlzLnN0YXRlLmNyb3BwZXJcbiAgICB9O1xuICAgIHRoaXMuaW5pdFBpbmNoKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQaW5jaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBpbmNoU3RhcnQkLm5leHQoKTtcbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaG1vdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGZyb21FdmVudChkb2N1bWVudCwgJ3RvdWNoZW5kJykpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChldmVudCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVQaW5jaE1vdmUoZXZlbnQgYXMgVG91Y2hFdmVudCk7XG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVBpbmNoU3RvcCgpO1xuICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVBpbmNoTW92ZShldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICghdGhpcy5tb3ZlU3RhcnQ/LmFjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vdmVTdGFydC50eXBlID09PSBNb3ZlVHlwZXMuUGluY2gpIHtcbiAgICAgIGlmICghdGhpcy5jcm9wcGVyU3RhdGljV2lkdGggJiYgIXRoaXMuY3JvcHBlclN0YXRpY0hlaWdodCkge1xuICAgICAgICB0aGlzLnN0YXRlLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJXaXRoaW5NYXhTaXplQm91bmRzKFxuICAgICAgICAgIHJlc2l6ZUNyb3BwZXIoZXZlbnQsIHRoaXMubW92ZVN0YXJ0LCB0aGlzLnN0YXRlKSxcbiAgICAgICAgICB0aGlzLnN0YXRlLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVQaW5jaFN0b3AoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1vdmVTdGFydD8uYWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZS5lcXVhbHNDcm9wcGVyUG9zaXRpb24odGhpcy5tb3ZlU3RhcnQuY3JvcHBlcikpIHtcbiAgICAgIHRoaXMuZW1pdENyb3BwZXJQb3NpdGlvbkNoYW5nZSh0aGlzLm1vdmVTdGFydC5jcm9wcGVyKTtcbiAgICAgIHRoaXMuZG9BdXRvQ3JvcCgpO1xuICAgIH1cbiAgICB0aGlzLm1vdmVTdGFydCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWF4U2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VJbWFnZSkge1xuICAgICAgY29uc3Qgc291cmNlSW1hZ2VTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5zb3VyY2VJbWFnZS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuc3RhdGUuc2V0TWF4U2l6ZShwYXJzZUZsb2F0KHNvdXJjZUltYWdlU3R5bGUud2lkdGgpLCBwYXJzZUZsb2F0KHNvdXJjZUltYWdlU3R5bGUuaGVpZ2h0KSk7XG4gICAgICB0aGlzLm1hcmdpbkxlZnQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoJ2NhbGMoNTAlIC0gJyArIHRoaXMuc3RhdGUubWF4U2l6ZSEud2lkdGggLyAyICsgJ3B4KScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdENyb3BwZXJQb3NpdGlvbkNoYW5nZShwcmV2aW91c1Bvc2l0aW9uOiBDcm9wcGVyUG9zaXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUuZXF1YWxzQ3JvcHBlclBvc2l0aW9uKHByZXZpb3VzUG9zaXRpb24pKSB7XG4gICAgICB0aGlzLmNyb3BwZXJDaGFuZ2UuZW1pdCh0aGlzLnN0YXRlLmNyb3BwZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZG9BdXRvQ3JvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5vcHRpb25zLmF1dG9Dcm9wKSB7XG4gICAgICB2b2lkIHRoaXMuY3JvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGNyb3AoKTogSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsO1xuICBjcm9wKG91dHB1dDogJ2Jhc2U2NCcpOiBJbWFnZUNyb3BwZWRFdmVudCB8IG51bGw7XG4gIGNyb3Aob3V0cHV0OiAnYmxvYicpOiBQcm9taXNlPEltYWdlQ3JvcHBlZEV2ZW50PiB8IG51bGw7XG4gIGNyb3Aob3V0cHV0OiBPdXRwdXRUeXBlID0gdGhpcy5zdGF0ZS5vcHRpb25zLm91dHB1dCk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHwgSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5sb2FkZWRJbWFnZT8udHJhbnNmb3JtZWQ/LmltYWdlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc3RhcnRDcm9wSW1hZ2UuZW1pdCgpO1xuICAgICAgaWYgKG91dHB1dCA9PT0gJ2Jsb2InKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyb3BUb0Jsb2IoKTtcbiAgICAgIH0gZWxzZSBpZiAob3V0cHV0ID09PSAnYmFzZTY0Jykge1xuICAgICAgICByZXR1cm4gdGhpcy5jcm9wVG9CYXNlNjQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNyb3BUb0Jsb2IoKTogUHJvbWlzZTxJbWFnZUNyb3BwZWRFdmVudD4gfCBudWxsIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy56b25lLnJ1bihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNyb3BTZXJ2aWNlLmNyb3AodGhpcy5zdGF0ZSwgJ2Jsb2InKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pbWFnZUNyb3BwZWQuZW1pdChyZXN1bHQpO1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoJ0Nyb3AgaW1hZ2UgZmFpbGVkJyk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcm9wVG9CYXNlNjQoKTogSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyb3BTZXJ2aWNlLmNyb3AodGhpcy5zdGF0ZSwgJ2Jhc2U2NCcpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuaW1hZ2VDcm9wcGVkLmVtaXQocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5waW5jaFN0YXJ0JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImltYWdlVmlzaWJsZSAmJiBzdGF0ZS5vcHRpb25zLmJhY2tncm91bmRDb2xvclwiXG4gICh0b3VjaHN0YXJ0KT1cInN0YXJ0UGluY2goJGV2ZW50KVwiXG4+XG4gIDxpbWdcbiAgICAjc291cmNlSW1hZ2VcbiAgICBjbGFzcz1cIm5neC1pYy1zb3VyY2UtaW1hZ2VcIlxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICpuZ0lmPVwic2FmZUltZ0RhdGFVcmwoKSBhcyBzcmNcIlxuICAgIFtzcmNdPVwic3JjXCJcbiAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJpbWFnZVZpc2libGUgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gICAgW3N0eWxlLnRyYW5zZm9ybV09XCJzYWZlVHJhbnNmb3JtU3R5bGVcIlxuICAgIFtjbGFzcy5uZ3gtaWMtZHJhZ2dhYmxlXT1cIiFkaXNhYmxlZCAmJiBhbGxvd01vdmVJbWFnZVwiXG4gICAgW2F0dHIuYWx0XT1cImltYWdlQWx0VGV4dFwiXG4gICAgKGxvYWQpPVwiaW1hZ2VMb2FkZWRJblZpZXcoKVwiXG4gICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuRHJhZylcIlxuICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5EcmFnKVwiXG4gICAgKGVycm9yKT1cImxvYWRJbWFnZUVycm9yKCRldmVudClcIlxuICA+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm5neC1pYy1vdmVybGF5XCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwic3RhdGUubWF4U2l6ZT8ud2lkdGggfHwgMFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJzdGF0ZS5tYXhTaXplPy5oZWlnaHQgfHwgMFwiXG4gICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cImFsaWduSW1hZ2UgPT09ICdjZW50ZXInID8gbWFyZ2luTGVmdCA6IG51bGxcIlxuICA+PC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm5neC1pYy1jcm9wcGVyXCJcbiAgICAqbmdJZj1cImltYWdlVmlzaWJsZVwiXG4gICAgW2NsYXNzLm5neC1pYy1yb3VuZF09XCJzdGF0ZS5vcHRpb25zLnJvdW5kQ3JvcHBlclwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdGF0ZS5vcHRpb25zLmNyb3BwZXJGcmFtZUFyaWFMYWJlbFwiXG4gICAgW3N0eWxlLnRvcC5weF09XCJzdGF0ZS5jcm9wcGVyLnkxXCJcbiAgICBbc3R5bGUubGVmdC5weF09XCJzdGF0ZS5jcm9wcGVyLngxXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwic3RhdGUuY3JvcHBlci54MiAtIHN0YXRlLmNyb3BwZXIueDFcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic3RhdGUuY3JvcHBlci55MiAtIHN0YXRlLmNyb3BwZXIueTFcIlxuICAgIFtzdHlsZS5tYXJnaW4tbGVmdF09XCJzdGF0ZS5vcHRpb25zLmFsaWduSW1hZ2UgPT09ICdjZW50ZXInID8gbWFyZ2luTGVmdCA6IG51bGxcIlxuICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImltYWdlVmlzaWJsZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgICAoa2V5ZG93bik9XCJrZXlib2FyZEFjY2VzcygkZXZlbnQpXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuTW92ZSlcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLk1vdmUpXCJcbiAgICAgIGNsYXNzPVwibmd4LWljLW1vdmVcIlxuICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIXN0YXRlLm9wdGlvbnMuaGlkZVJlc2l6ZVNxdWFyZXMgJiYgIShzdGF0ZS5vcHRpb25zLmNyb3BwZXJTdGF0aWNXaWR0aCAmJiBzdGF0ZS5vcHRpb25zLmNyb3BwZXJTdGF0aWNIZWlnaHQpXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm5neC1pYy1yZXNpemUgbmd4LWljLXRvcGxlZnRcIlxuICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAndG9wbGVmdCcpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ3RvcGxlZnQnKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXNxdWFyZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXJlc2l6ZSBuZ3gtaWMtdG9wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXNxdWFyZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZSBuZ3gtaWMtdG9wcmlnaHRcIlxuICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAndG9wcmlnaHQnKVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICd0b3ByaWdodCcpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtcmVzaXplIG5neC1pYy1yaWdodFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5neC1pYy1zcXVhcmVcIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm5neC1pYy1yZXNpemUgbmd4LWljLWJvdHRvbXJpZ2h0XCJcbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ2JvdHRvbXJpZ2h0JylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnYm90dG9tcmlnaHQnKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXNxdWFyZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXJlc2l6ZSBuZ3gtaWMtYm90dG9tXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXNxdWFyZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZSBuZ3gtaWMtYm90dG9tbGVmdFwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdib3R0b21sZWZ0JylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnYm90dG9tbGVmdCcpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtcmVzaXplIG5neC1pYy1sZWZ0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXNxdWFyZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZS1iYXIgbmd4LWljLXRvcFwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICd0b3AnKVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICd0b3AnKVwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJuZ3gtaWMtcmVzaXplLWJhciBuZ3gtaWMtcmlnaHRcIlxuICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAncmlnaHQnKVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdyaWdodCcpXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm5neC1pYy1yZXNpemUtYmFyIG5neC1pYy1ib3R0b21cIlxuICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnYm90dG9tJylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnYm90dG9tJylcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZS1iYXIgbmd4LWljLWxlZnRcIlxuICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnbGVmdCcpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ2xlZnQnKVwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
527
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvbGliL2NvbXBvbmVudC9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy9saWIvY29tcG9uZW50L2ltYWdlLWNyb3BwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBWXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUseUJBQXlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQiwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNkLE1BQU0saUNBQWlDLENBQUM7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QUFnQjs7c0JBQzVCLEtBQUs7Z0JBRUcsTUFBTTtzQkFEZCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFHSCxlQUFlO3NCQURsQixXQUFXO3VCQUFDLGtCQUFrQjtnQkErSy9CLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVN0eWxlLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICBDcm9wcGVyT3B0aW9ucyxcbiAgQ3JvcHBlclBvc2l0aW9uLFxuICBEaW1lbnNpb25zLFxuICBJbWFnZUNyb3BwZWRFdmVudCxcbiAgSW1hZ2VUcmFuc2Zvcm0sXG4gIExvYWRlZEltYWdlLFxuICBNb3ZlU3RhcnRcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPdXRwdXRGb3JtYXQsIE91dHB1dFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nyb3BwZXItb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3JvcHBlclN0YXRlIH0gZnJvbSAnLi9jcm9wcGVyLnN0YXRlJztcbmltcG9ydCB7IE1vdmVUeXBlcywgUG9zaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL21vdmUtc3RhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENyb3BTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY3JvcC5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRJbWFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2FkLWltYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0RXZlbnRGb3JLZXksIGdldEludmVydGVkUG9zaXRpb25Gb3JLZXksIGdldFBvc2l0aW9uRm9yS2V5IH0gZnJvbSAnLi4vdXRpbHMva2V5Ym9hcmQudXRpbHMnO1xuaW1wb3J0IHsgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFzaWNFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzaWMtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoZWNrQ3JvcHBlclBvc2l0aW9uLFxuICBjaGVja0Nyb3BwZXJXaXRoaW5NYXhTaXplQm91bmRzLFxuICBnZXRDbGllbnRYLFxuICBnZXRDbGllbnRZLFxuICBtb3ZlQ3JvcHBlcixcbiAgcmVzaXplQ3JvcHBlclxufSBmcm9tICcuLi91dGlscy9jcm9wcGVyLXBvc2l0aW9uLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1hZ2UtY3JvcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWZdLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNyb3BwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBpbmNoU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjcm9wU2VydmljZSA9IG5ldyBDcm9wU2VydmljZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRJbWFnZVNlcnZpY2UgPSBuZXcgTG9hZEltYWdlU2VydmljZSgpO1xuXG4gIHByaXZhdGUgc2V0SW1hZ2VNYXhTaXplUmV0cmllcyA9IDA7XG4gIHByaXZhdGUgbW92ZVN0YXJ0PzogTW92ZVN0YXJ0O1xuICBwcml2YXRlIHJlc2l6ZWRXaGlsZUhpZGRlbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtb3ZlVHlwZXMgPSBNb3ZlVHlwZXM7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGF0ZSA9IG5ldyBDcm9wcGVyU3RhdGUoKTtcblxuICByZWFkb25seSBzYWZlSW1nRGF0YVVybCA9IHNpZ25hbDxTYWZlVXJsIHwgc3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBzYWZlVHJhbnNmb3JtU3R5bGU/OiBTYWZlU3R5bGUgfCBzdHJpbmc7XG4gIG1hcmdpbkxlZnQ6IFNhZmVTdHlsZSB8IHN0cmluZyA9ICcwcHgnO1xuICBpbWFnZVZpc2libGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywge3N0YXRpYzogdHJ1ZX0pIHdyYXBwZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc291cmNlSW1hZ2UnLCB7c3RhdGljOiBmYWxzZX0pIHNvdXJjZUltYWdlITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQElucHV0KCkgaW1hZ2VDaGFuZ2VkRXZlbnQ/OiBFdmVudCB8IG51bGw7XG4gIEBJbnB1dCgpIGltYWdlVVJMPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbWFnZUJhc2U2ND86IHN0cmluZztcbiAgQElucHV0KCkgaW1hZ2VGaWxlPzogRmlsZTtcbiAgQElucHV0KCkgaW1hZ2VBbHRUZXh0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBQYXJ0aWFsPENyb3BwZXJPcHRpb25zPjtcbiAgQElucHV0KCkgY3JvcHBlckZyYW1lQXJpYUxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvdXRwdXQ/OiAnYmxvYicgfCAnYmFzZTY0JztcbiAgQElucHV0KCkgZm9ybWF0PzogT3V0cHV0Rm9ybWF0O1xuICBASW5wdXQoKSBhdXRvQ3JvcD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNyb3BwZXI/OiBDcm9wcGVyUG9zaXRpb247XG4gIEBJbnB1dCgpIHRyYW5zZm9ybT86IEltYWdlVHJhbnNmb3JtO1xuICBASW5wdXQoKSBtYWludGFpbkFzcGVjdFJhdGlvPzogYm9vbGVhbjtcbiAgQElucHV0KCkgYXNwZWN0UmF0aW8/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJlc2V0Q3JvcE9uQXNwZWN0UmF0aW9DaGFuZ2U/OiBib29sZWFuO1xuICBASW5wdXQoKSByZXNpemVUb1dpZHRoPzogbnVtYmVyO1xuICBASW5wdXQoKSByZXNpemVUb0hlaWdodD86IG51bWJlcjtcbiAgQElucHV0KCkgY3JvcHBlck1pbldpZHRoPzogbnVtYmVyO1xuICBASW5wdXQoKSBjcm9wcGVyTWluSGVpZ2h0PzogbnVtYmVyO1xuICBASW5wdXQoKSBjcm9wcGVyTWF4SGVpZ2h0PzogbnVtYmVyO1xuICBASW5wdXQoKSBjcm9wcGVyTWF4V2lkdGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNyb3BwZXJTdGF0aWNXaWR0aD86IG51bWJlcjtcbiAgQElucHV0KCkgY3JvcHBlclN0YXRpY0hlaWdodD86IG51bWJlcjtcbiAgQElucHV0KCkgY2FudmFzUm90YXRpb24/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGluaXRpYWxTdGVwU2l6ZT86IG51bWJlcjtcbiAgQElucHV0KCkgcm91bmRDcm9wcGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgb25seVNjYWxlRG93bj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGltYWdlUXVhbGl0eT86IG51bWJlcjtcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBjb250YWluV2l0aGluQXNwZWN0UmF0aW8/OiBib29sZWFuO1xuICBASW5wdXQoKSBoaWRlUmVzaXplU3F1YXJlcz86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFsbG93TW92ZUltYWdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNoZWNrSW1hZ2VUeXBlID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxpZ25JbWFnZT86ICdsZWZ0JyB8ICdjZW50ZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1pYy1oaWRkZW4nKVxuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgaW1hZ2VDcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbWFnZUNyb3BwZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0Q3JvcEltYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgaW1hZ2VMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExvYWRlZEltYWdlPigpO1xuICBAT3V0cHV0KCkgY3JvcHBlclJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxEaW1lbnNpb25zPigpO1xuICBAT3V0cHV0KCkgbG9hZEltYWdlRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdHJhbnNmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJbWFnZVRyYW5zZm9ybT4oKTtcbiAgQE91dHB1dCgpIGNyb3BwZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENyb3BwZXJQb3NpdGlvbj4oKTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRleHQtYWxpZ24nKVxuICBnZXQgYWxpZ25JbWFnZVN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLm9wdGlvbnMuYWxpZ25JbWFnZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5zdGVwU2l6ZSA9IHRoaXMuaW5pdGlhbFN0ZXBTaXplIHx8IHRoaXMuc3RhdGUuc3RlcFNpemU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNDcm9wcGVyUG9zaXRpb24gPSB0aGlzLnN0YXRlLmNyb3BwZXI7XG4gICAgY29uc3QgcHJldmlvdXNUcmFuc2Zvcm0gPSB0aGlzLnN0YXRlLnRyYW5zZm9ybTtcbiAgICBjb25zdCBwcmV2aW91c0JhY2tncm91bmRDb2xvciA9IHRoaXMuc3RhdGUub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I7XG5cbiAgICB0aGlzLnN0YXRlLnNldE9wdGlvbnNGcm9tQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB0aGlzLm9uQ2hhbmdlc0lucHV0SW1hZ2UoY2hhbmdlcyk7XG5cbiAgICBpZiAoY2hhbmdlc1sndHJhbnNmb3JtJ10gJiYgdGhpcy50cmFuc2Zvcm0pIHtcbiAgICAgIHRoaXMuc3RhdGUudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm07XG4gICAgICB0aGlzLnNldENzc1RyYW5zZm9ybSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zdGF0ZS5sb2FkZWRJbWFnZT8udHJhbnNmb3JtZWQuaW1hZ2UuY29tcGxldGUgfHwgIXRoaXMuc3RhdGUubWF4U2l6ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgodGhpcy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8gJiYgY2hhbmdlc1snYXNwZWN0UmF0aW8nXSkgfHwgY2hhbmdlc1snY29udGFpbldpdGhpbkFzcGVjdFJhdGlvJ10gfHwgY2hhbmdlc1snY2FudmFzUm90YXRpb24nXSkge1xuICAgICAgdGhpcy5sb2FkSW1hZ2VTZXJ2aWNlXG4gICAgICAgIC50cmFuc2Zvcm1Mb2FkZWRJbWFnZSh0aGlzLnN0YXRlLmxvYWRlZEltYWdlLCB0aGlzLnN0YXRlKVxuICAgICAgICAudGhlbigocmVzKSA9PiB0aGlzLnNldExvYWRlZEltYWdlKHJlcykpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB0aGlzLmxvYWRJbWFnZUVycm9yKGVycikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjcm9wcGVyJ10gJiYgdGhpcy5jcm9wcGVyKSB7XG4gICAgICB0aGlzLnN0YXRlLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJQb3NpdGlvbih0aGlzLmNyb3BwZXIsIHRoaXMuc3RhdGUsIHRydWUpO1xuICAgIH1cbiAgICBjb25zdCBjcm9wcGVyQ2hhbmdlZCA9ICF0aGlzLnN0YXRlLmVxdWFsc0Nyb3BwZXJQb3NpdGlvbihwcmV2aW91c0Nyb3BwZXJQb3NpdGlvbik7XG4gICAgaWYgKGNyb3BwZXJDaGFuZ2VkICYmICghdGhpcy5jcm9wcGVyIHx8ICF0aGlzLnN0YXRlLmVxdWFsc0Nyb3BwZXJQb3NpdGlvbih0aGlzLmNyb3BwZXIpKSkge1xuICAgICAgdGhpcy5jcm9wcGVyQ2hhbmdlLmVtaXQodGhpcy5zdGF0ZS5jcm9wcGVyKTtcbiAgICB9XG4gICAgaWYgKGNyb3BwZXJDaGFuZ2VkXG4gICAgICB8fCAhdGhpcy5zdGF0ZS5lcXVhbHNUcmFuc2Zvcm0ocHJldmlvdXNUcmFuc2Zvcm0pXG4gICAgICB8fCB0aGlzLnN0YXRlLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yICE9PSBwcmV2aW91c0JhY2tncm91bmRDb2xvcikge1xuICAgICAgdGhpcy5kb0F1dG9Dcm9wKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2hpZGRlbiddICYmIHRoaXMucmVzaXplZFdoaWxlSGlkZGVuICYmICF0aGlzLmhpZGRlbikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgICAgdGhpcy5yZXNpemVkV2hpbGVIaWRkZW4gPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VzSW5wdXRJbWFnZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2ltYWdlQ2hhbmdlZEV2ZW50J10gfHwgY2hhbmdlc1snaW1hZ2VVUkwnXSB8fCBjaGFuZ2VzWydpbWFnZUJhc2U2NCddIHx8IGNoYW5nZXNbJ2ltYWdlRmlsZSddKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUNoYW5nZWRFdmVudCddICYmIHRoaXMuaXNWYWxpZEltYWdlQ2hhbmdlZEV2ZW50KCkpIHtcbiAgICAgIHRoaXMubG9hZEltYWdlRmlsZSh0aGlzLmltYWdlQ2hhbmdlZEV2ZW50LnRhcmdldC5maWxlc1swXSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbWFnZVVSTCddICYmIHRoaXMuaW1hZ2VVUkwpIHtcbiAgICAgIHRoaXMubG9hZEltYWdlRnJvbVVSTCh0aGlzLmltYWdlVVJMKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2ltYWdlQmFzZTY0J10gJiYgdGhpcy5pbWFnZUJhc2U2NCkge1xuICAgICAgdGhpcy5sb2FkQmFzZTY0SW1hZ2UodGhpcy5pbWFnZUJhc2U2NCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUZpbGUnXSAmJiB0aGlzLmltYWdlRmlsZSkge1xuICAgICAgdGhpcy5sb2FkSW1hZ2VGaWxlKHRoaXMuaW1hZ2VGaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRJbWFnZUNoYW5nZWRFdmVudCgpOiB0aGlzIGlzIHtcbiAgICBpbWFnZUNoYW5nZWRFdmVudDogRXZlbnQgJiB7XG4gICAgICB0YXJnZXQ6IHsgZmlsZXM6IEZpbGVMaXN0IH07XG4gICAgfVxuICB9IHtcbiAgICBjb25zdCBmaWxlcyA9ICh0aGlzLmltYWdlQ2hhbmdlZEV2ZW50IGFzIGFueSk/LnRhcmdldD8uZmlsZXM7XG4gICAgcmV0dXJuIGZpbGVzIGluc3RhbmNlb2YgRmlsZUxpc3QgJiYgZmlsZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zYWZlSW1nRGF0YVVybC5zZXQoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnJ1xuICAgICAgKyAnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFDMGxFUVZRWVYyTmdBQUlBQUFVJ1xuICAgICAgKyAnQUFhclZ5RkVBQUFBQVNVVk9SSzVDWUlJPScpO1xuICAgIHRoaXMuc3RhdGUubG9hZGVkSW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdGF0ZS5tYXhTaXplID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW1hZ2VWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJbWFnZUZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMubG9hZEltYWdlU2VydmljZVxuICAgICAgLmxvYWRJbWFnZUZpbGUoZmlsZSwgdGhpcy5zdGF0ZSlcbiAgICAgIC50aGVuKChyZXMpID0+IHRoaXMuc2V0TG9hZGVkSW1hZ2UocmVzKSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB0aGlzLmxvYWRJbWFnZUVycm9yKGVycikpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQmFzZTY0SW1hZ2UoaW1hZ2VCYXNlNjQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9hZEltYWdlU2VydmljZVxuICAgICAgLmxvYWRCYXNlNjRJbWFnZShpbWFnZUJhc2U2NCwgdGhpcy5zdGF0ZSlcbiAgICAgIC50aGVuKChyZXMpID0+IHRoaXMuc2V0TG9hZGVkSW1hZ2UocmVzKSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB0aGlzLmxvYWRJbWFnZUVycm9yKGVycikpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSW1hZ2VGcm9tVVJMKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkSW1hZ2VTZXJ2aWNlXG4gICAgICAubG9hZEltYWdlRnJvbVVSTCh1cmwsIHRoaXMuc3RhdGUpXG4gICAgICAudGhlbigocmVzKSA9PiB0aGlzLnNldExvYWRlZEltYWdlKHJlcykpXG4gICAgICAuY2F0Y2goKGVycikgPT4gdGhpcy5sb2FkSW1hZ2VFcnJvcihlcnIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TG9hZGVkSW1hZ2UobG9hZGVkSW1hZ2U6IExvYWRlZEltYWdlKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5sb2FkZWRJbWFnZSA9IGxvYWRlZEltYWdlO1xuICAgIHRoaXMuc2FmZUltZ0RhdGFVcmwuc2V0KHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5vYmplY3RVcmwpKTtcbiAgfVxuXG4gIGxvYWRJbWFnZUVycm9yKGVycm9yOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgdGhpcy5sb2FkSW1hZ2VGYWlsZWQuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDc3NUcmFuc2Zvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNsYXRlVW5pdCA9IHRoaXMuc3RhdGUudHJhbnNmb3JtPy50cmFuc2xhdGVVbml0IHx8ICclJztcbiAgICB0aGlzLnNhZmVUcmFuc2Zvcm1TdHlsZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShcbiAgICAgIGB0cmFuc2xhdGUoJHt0aGlzLnN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVIIHx8IDB9JHt0cmFuc2xhdGVVbml0fSwgJHt0aGlzLnN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVWIHx8IDB9JHt0cmFuc2xhdGVVbml0fSlgICtcbiAgICAgICcgc2NhbGVYKCcgKyAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uZmxpcEggPyAtMSA6IDEpICsgJyknICtcbiAgICAgICcgc2NhbGVZKCcgKyAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAodGhpcy5zdGF0ZS50cmFuc2Zvcm0uZmxpcFYgPyAtMSA6IDEpICsgJyknICtcbiAgICAgICcgcm90YXRlKCcgKyAodGhpcy5zdGF0ZS50cmFuc2Zvcm0ucm90YXRlIHx8IDApICsgJ2RlZyknXG4gICAgKTtcbiAgfVxuXG4gIGltYWdlTG9hZGVkSW5WaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlLmxvYWRlZEltYWdlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaW1hZ2VMb2FkZWQuZW1pdCh0aGlzLnN0YXRlLmxvYWRlZEltYWdlKTtcbiAgICAgIHRoaXMuc2V0SW1hZ2VNYXhTaXplUmV0cmllcyA9IDA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tJbWFnZU1heFNpemVSZWN1cnNpdmVseSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSW1hZ2VNYXhTaXplUmVjdXJzaXZlbHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0SW1hZ2VNYXhTaXplUmV0cmllcyA+IDQwKSB7XG4gICAgICB0aGlzLmxvYWRJbWFnZUZhaWxlZC5lbWl0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNvdXJjZUltYWdlTG9hZGVkKCkpIHtcbiAgICAgIHRoaXMuc2V0TWF4U2l6ZSgpO1xuICAgICAgaWYgKHRoaXMuY3JvcHBlciAmJiAoIXRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpbyB8fCB0aGlzLnN0YXRlLmFzcGVjdFJhdGlvSXNDb3JyZWN0KCkpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuY3JvcHBlciA9IGNoZWNrQ3JvcHBlclBvc2l0aW9uKHRoaXMuY3JvcHBlciwgdGhpcy5zdGF0ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZW1pdENyb3BwZXJQb3NpdGlvbkNoYW5nZSh0aGlzLmNyb3BwZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5jcm9wcGVyID0gY2hlY2tDcm9wcGVyUG9zaXRpb24odGhpcy5zdGF0ZS5tYXhTaXplQ3JvcHBlclBvc2l0aW9uKCksIHRoaXMuc3RhdGUsIHRydWUpO1xuICAgICAgICB0aGlzLmNyb3BwZXJDaGFuZ2UuZW1pdCh0aGlzLnN0YXRlLmNyb3BwZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbWFnZVZpc2libGUgPSB0cnVlO1xuICAgICAgdGhpcy5jcm9wcGVyUmVhZHkuZW1pdCh7Li4udGhpcy5zdGF0ZS5tYXhTaXplIX0pO1xuICAgICAgdGhpcy5kb0F1dG9Dcm9wKCk7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEltYWdlTWF4U2l6ZVJldHJpZXMrKztcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja0ltYWdlTWF4U2l6ZVJlY3Vyc2l2ZWx5KCksIDUwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvdXJjZUltYWdlTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUltYWdlPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA+IDE7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmxvYWRlZEltYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmhpZGRlbikge1xuICAgICAgdGhpcy5yZXNpemVkV2hpbGVIaWRkZW4gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvbGRNYXhTaXplID0gey4uLnRoaXMuc3RhdGUubWF4U2l6ZSF9O1xuICAgICAgdGhpcy5zZXRNYXhTaXplKCk7XG4gICAgICB0aGlzLnN0YXRlLnJlc2l6ZUNyb3BwZXJQb3NpdGlvbihvbGRNYXhTaXplKTtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAga2V5Ym9hcmRBY2Nlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmNoYW5nZUtleWJvYXJkU3RlcFNpemUoZXZlbnQpO1xuICAgIHRoaXMua2V5Ym9hcmRNb3ZlQ3JvcHBlcihldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUtleWJvYXJkU3RlcFNpemUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSArZXZlbnQua2V5O1xuICAgIGlmIChrZXkgPj0gMSAmJiBrZXkgPD0gOSkge1xuICAgICAgdGhpcy5zdGF0ZS5zdGVwU2l6ZSA9IGtleTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkTW92ZUNyb3BwZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlib2FyZFdoaXRlTGlzdDogc3RyaW5nW10gPSBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0J107XG4gICAgaWYgKCEoa2V5Ym9hcmRXaGl0ZUxpc3QuaW5jbHVkZXMoZXZlbnQua2V5KSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbW92ZVR5cGUgPSBldmVudC5zaGlmdEtleSA/IE1vdmVUeXBlcy5SZXNpemUgOiBNb3ZlVHlwZXMuTW92ZTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGV2ZW50LmFsdEtleSA/IGdldEludmVydGVkUG9zaXRpb25Gb3JLZXkoZXZlbnQua2V5KSA6IGdldFBvc2l0aW9uRm9yS2V5KGV2ZW50LmtleSk7XG4gICAgY29uc3QgbW92ZUV2ZW50ID0gZ2V0RXZlbnRGb3JLZXkoZXZlbnQua2V5LCB0aGlzLnN0YXRlLnN0ZXBTaXplKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubW92ZVN0YXJ0ID0ge1xuICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgdHlwZTogbW92ZVR5cGUsXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGNsaWVudFg6IDAsXG4gICAgICBjbGllbnRZOiAwLFxuICAgICAgdHJhbnNmb3JtOiB0aGlzLnN0YXRlLnRyYW5zZm9ybSxcbiAgICAgIGNyb3BwZXI6IHRoaXMuc3RhdGUuY3JvcHBlclxuICAgIH07XG4gICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUobW92ZUV2ZW50KTtcbiAgICB0aGlzLmhhbmRsZU1vdXNlVXAoKTtcbiAgfVxuXG4gIHN0YXJ0TW92ZShldmVudDogRXZlbnQgfCBCYXNpY0V2ZW50LCBtb3ZlVHlwZTogTW92ZVR5cGVzLCBwb3NpdGlvbjogUG9zaXRpb24gfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkXG4gICAgICB8fCB0aGlzLm1vdmVTdGFydD8uYWN0aXZlICYmIHRoaXMubW92ZVN0YXJ0Py50eXBlID09PSBNb3ZlVHlwZXMuUGluY2hcbiAgICAgIHx8IG1vdmVUeXBlID09PSBNb3ZlVHlwZXMuRHJhZyAmJiAhdGhpcy5hbGxvd01vdmVJbWFnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoJ3ByZXZlbnREZWZhdWx0JyBpbiBldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5tb3ZlU3RhcnQgPSB7XG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgICB0eXBlOiBtb3ZlVHlwZSxcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgY2xpZW50WDogZ2V0Q2xpZW50WChldmVudCksXG4gICAgICBjbGllbnRZOiBnZXRDbGllbnRZKGV2ZW50KSxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy5zdGF0ZS50cmFuc2Zvcm0sXG4gICAgICBjcm9wcGVyOiB0aGlzLnN0YXRlLmNyb3BwZXJcbiAgICB9O1xuICAgIHRoaXMuaW5pdE1vdXNlTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0TW91c2VNb3ZlKCk6IHZvaWQge1xuICAgIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJyksXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaG1vdmUnKVxuICAgICkucGlwZShcbiAgICAgIHRha2VVbnRpbChtZXJnZShcbiAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2V1cCcpLFxuICAgICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaGVuZCcpLFxuICAgICAgICB0aGlzLnBpbmNoU3RhcnQkXG4gICAgICApLnBpcGUoZmlyc3QoKSkpXG4gICAgKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGV2ZW50KSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUoZXZlbnQpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSksXG4gICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlTW91c2VVcCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBFdmVudCB8IEJhc2ljRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW92ZVN0YXJ0Py5hY3RpdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCdzdG9wUHJvcGFnYXRpb24nIGluIGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKCdwcmV2ZW50RGVmYXVsdCcgaW4gZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vdmVTdGFydC50eXBlID09PSBNb3ZlVHlwZXMuTW92ZSkge1xuICAgICAgdGhpcy5zdGF0ZS5jcm9wcGVyID0gY2hlY2tDcm9wcGVyV2l0aGluTWF4U2l6ZUJvdW5kcyhcbiAgICAgICAgbW92ZUNyb3BwZXIoZXZlbnQsIHRoaXMubW92ZVN0YXJ0KSxcbiAgICAgICAgdGhpcy5zdGF0ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW92ZVN0YXJ0LnR5cGUgPT09IE1vdmVUeXBlcy5SZXNpemUpIHtcbiAgICAgIGlmICghdGhpcy5jcm9wcGVyU3RhdGljV2lkdGggJiYgIXRoaXMuY3JvcHBlclN0YXRpY0hlaWdodCkge1xuICAgICAgICB0aGlzLnN0YXRlLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJXaXRoaW5NYXhTaXplQm91bmRzKFxuICAgICAgICAgIHJlc2l6ZUNyb3BwZXIoZXZlbnQsIHRoaXMubW92ZVN0YXJ0LCB0aGlzLnN0YXRlKSxcbiAgICAgICAgICB0aGlzLnN0YXRlLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vdmVTdGFydC50eXBlID09PSBNb3ZlVHlwZXMuRHJhZykge1xuICAgICAgY29uc3QgZGlmZlggPSBnZXRDbGllbnRYKGV2ZW50KSAtIHRoaXMubW92ZVN0YXJ0LmNsaWVudFg7XG4gICAgICBjb25zdCBkaWZmWSA9IGdldENsaWVudFkoZXZlbnQpIC0gdGhpcy5tb3ZlU3RhcnQuY2xpZW50WTtcbiAgICAgIHRoaXMuc3RhdGUudHJhbnNmb3JtID0ge1xuICAgICAgICAuLi50aGlzLnN0YXRlLnRyYW5zZm9ybSxcbiAgICAgICAgdHJhbnNsYXRlSDogKHRoaXMubW92ZVN0YXJ0LnRyYW5zZm9ybT8udHJhbnNsYXRlSCB8fCAwKSArIGRpZmZYLFxuICAgICAgICB0cmFuc2xhdGVWOiAodGhpcy5tb3ZlU3RhcnQudHJhbnNmb3JtPy50cmFuc2xhdGVWIHx8IDApICsgZGlmZllcbiAgICAgIH07XG4gICAgICB0aGlzLnNldENzc1RyYW5zZm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VVcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW92ZVN0YXJ0Py5hY3RpdmUgfHwgdGhpcy5tb3ZlU3RhcnQ/LnR5cGUgPT09IE1vdmVUeXBlcy5QaW5jaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc3RhdGUuZXF1YWxzQ3JvcHBlclBvc2l0aW9uKHRoaXMubW92ZVN0YXJ0LmNyb3BwZXIpIHx8IHRoaXMubW92ZVN0YXJ0LnRyYW5zZm9ybSAmJiAhdGhpcy5zdGF0ZS5lcXVhbHNUcmFuc2Zvcm0odGhpcy5tb3ZlU3RhcnQudHJhbnNmb3JtKSkge1xuICAgICAgaWYgKHRoaXMubW92ZVN0YXJ0LnR5cGUgPT09IE1vdmVUeXBlcy5EcmFnKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2hhbmdlLmVtaXQodGhpcy5zdGF0ZS50cmFuc2Zvcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcm9wcGVyQ2hhbmdlLmVtaXQodGhpcy5zdGF0ZS5jcm9wcGVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZG9BdXRvQ3JvcCgpO1xuICAgIH1cbiAgICB0aGlzLm1vdmVTdGFydCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXJ0UGluY2goZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zb3VyY2VJbWFnZUxvYWRlZCgpIHx8IGV2ZW50LnRvdWNoZXMubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoJ3ByZXZlbnREZWZhdWx0JyBpbiBldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5tb3ZlU3RhcnQgPSB7XG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgICB0eXBlOiBNb3ZlVHlwZXMuUGluY2gsXG4gICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICBjbGllbnRYOiB0aGlzLnN0YXRlLmNyb3BwZXIueDEgKyAodGhpcy5zdGF0ZS5jcm9wcGVyLngyIC0gdGhpcy5zdGF0ZS5jcm9wcGVyLngxKSAvIDIsXG4gICAgICBjbGllbnRZOiB0aGlzLnN0YXRlLmNyb3BwZXIueTEgKyAodGhpcy5zdGF0ZS5jcm9wcGVyLnkyIC0gdGhpcy5zdGF0ZS5jcm9wcGVyLnkxKSAvIDIsXG4gICAgICBjcm9wcGVyOiB0aGlzLnN0YXRlLmNyb3BwZXJcbiAgICB9O1xuICAgIHRoaXMuaW5pdFBpbmNoKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQaW5jaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBpbmNoU3RhcnQkLm5leHQoKTtcbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaG1vdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGZyb21FdmVudChkb2N1bWVudCwgJ3RvdWNoZW5kJykpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChldmVudCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVQaW5jaE1vdmUoZXZlbnQgYXMgVG91Y2hFdmVudCk7XG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVBpbmNoU3RvcCgpO1xuICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVBpbmNoTW92ZShldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICghdGhpcy5tb3ZlU3RhcnQ/LmFjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vdmVTdGFydC50eXBlID09PSBNb3ZlVHlwZXMuUGluY2gpIHtcbiAgICAgIGlmICghdGhpcy5jcm9wcGVyU3RhdGljV2lkdGggJiYgIXRoaXMuY3JvcHBlclN0YXRpY0hlaWdodCkge1xuICAgICAgICB0aGlzLnN0YXRlLmNyb3BwZXIgPSBjaGVja0Nyb3BwZXJXaXRoaW5NYXhTaXplQm91bmRzKFxuICAgICAgICAgIHJlc2l6ZUNyb3BwZXIoZXZlbnQsIHRoaXMubW92ZVN0YXJ0LCB0aGlzLnN0YXRlKSxcbiAgICAgICAgICB0aGlzLnN0YXRlLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVQaW5jaFN0b3AoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1vdmVTdGFydD8uYWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZS5lcXVhbHNDcm9wcGVyUG9zaXRpb24odGhpcy5tb3ZlU3RhcnQuY3JvcHBlcikpIHtcbiAgICAgIHRoaXMuZW1pdENyb3BwZXJQb3NpdGlvbkNoYW5nZSh0aGlzLm1vdmVTdGFydC5jcm9wcGVyKTtcbiAgICAgIHRoaXMuZG9BdXRvQ3JvcCgpO1xuICAgIH1cbiAgICB0aGlzLm1vdmVTdGFydCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWF4U2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VJbWFnZSkge1xuICAgICAgY29uc3Qgc291cmNlSW1hZ2VTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5zb3VyY2VJbWFnZS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuc3RhdGUuc2V0TWF4U2l6ZShwYXJzZUZsb2F0KHNvdXJjZUltYWdlU3R5bGUud2lkdGgpLCBwYXJzZUZsb2F0KHNvdXJjZUltYWdlU3R5bGUuaGVpZ2h0KSk7XG4gICAgICB0aGlzLm1hcmdpbkxlZnQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoJ2NhbGMoNTAlIC0gJyArIHRoaXMuc3RhdGUubWF4U2l6ZSEud2lkdGggLyAyICsgJ3B4KScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdENyb3BwZXJQb3NpdGlvbkNoYW5nZShwcmV2aW91c1Bvc2l0aW9uOiBDcm9wcGVyUG9zaXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUuZXF1YWxzQ3JvcHBlclBvc2l0aW9uKHByZXZpb3VzUG9zaXRpb24pKSB7XG4gICAgICB0aGlzLmNyb3BwZXJDaGFuZ2UuZW1pdCh0aGlzLnN0YXRlLmNyb3BwZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZG9BdXRvQ3JvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5vcHRpb25zLmF1dG9Dcm9wKSB7XG4gICAgICB2b2lkIHRoaXMuY3JvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGNyb3AoKTogSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsO1xuICBjcm9wKG91dHB1dDogJ2Jhc2U2NCcpOiBJbWFnZUNyb3BwZWRFdmVudCB8IG51bGw7XG4gIGNyb3Aob3V0cHV0OiAnYmxvYicpOiBQcm9taXNlPEltYWdlQ3JvcHBlZEV2ZW50PiB8IG51bGw7XG4gIGNyb3Aob3V0cHV0OiBPdXRwdXRUeXBlID0gdGhpcy5zdGF0ZS5vcHRpb25zLm91dHB1dCk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHwgSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5sb2FkZWRJbWFnZT8udHJhbnNmb3JtZWQ/LmltYWdlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc3RhcnRDcm9wSW1hZ2UuZW1pdCgpO1xuICAgICAgaWYgKG91dHB1dCA9PT0gJ2Jsb2InKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyb3BUb0Jsb2IoKTtcbiAgICAgIH0gZWxzZSBpZiAob3V0cHV0ID09PSAnYmFzZTY0Jykge1xuICAgICAgICByZXR1cm4gdGhpcy5jcm9wVG9CYXNlNjQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNyb3BUb0Jsb2IoKTogUHJvbWlzZTxJbWFnZUNyb3BwZWRFdmVudD4gfCBudWxsIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy56b25lLnJ1bihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNyb3BTZXJ2aWNlLmNyb3AodGhpcy5zdGF0ZSwgJ2Jsb2InKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pbWFnZUNyb3BwZWQuZW1pdChyZXN1bHQpO1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoJ0Nyb3AgaW1hZ2UgZmFpbGVkJyk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcm9wVG9CYXNlNjQoKTogSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyb3BTZXJ2aWNlLmNyb3AodGhpcy5zdGF0ZSwgJ2Jhc2U2NCcpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuaW1hZ2VDcm9wcGVkLmVtaXQocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVzZXRDcm9wcGVyUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5jcm9wcGVyID0gY2hlY2tDcm9wcGVyUG9zaXRpb24odGhpcy5zdGF0ZS5tYXhTaXplQ3JvcHBlclBvc2l0aW9uKCksIHRoaXMuc3RhdGUsIHRydWUpO1xuICAgIHRoaXMuY3JvcHBlckNoYW5nZS5lbWl0KHRoaXMuc3RhdGUuY3JvcHBlcik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBpbmNoU3RhcnQkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW3N0eWxlLmJhY2tncm91bmRdPVwiaW1hZ2VWaXNpYmxlICYmIHN0YXRlLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yXCJcbiAgKHRvdWNoc3RhcnQpPVwic3RhcnRQaW5jaCgkZXZlbnQpXCJcbj5cbiAgPGltZ1xuICAgICNzb3VyY2VJbWFnZVxuICAgIGNsYXNzPVwibmd4LWljLXNvdXJjZS1pbWFnZVwiXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgKm5nSWY9XCJzYWZlSW1nRGF0YVVybCgpIGFzIHNyY1wiXG4gICAgW3NyY109XCJzcmNcIlxuICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImltYWdlVmlzaWJsZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgICBbc3R5bGUudHJhbnNmb3JtXT1cInNhZmVUcmFuc2Zvcm1TdHlsZVwiXG4gICAgW2NsYXNzLm5neC1pYy1kcmFnZ2FibGVdPVwiIWRpc2FibGVkICYmIGFsbG93TW92ZUltYWdlXCJcbiAgICBbYXR0ci5hbHRdPVwiaW1hZ2VBbHRUZXh0XCJcbiAgICAobG9hZCk9XCJpbWFnZUxvYWRlZEluVmlldygpXCJcbiAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5EcmFnKVwiXG4gICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLkRyYWcpXCJcbiAgICAoZXJyb3IpPVwibG9hZEltYWdlRXJyb3IoJGV2ZW50KVwiXG4gID5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmd4LWljLW92ZXJsYXlcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJzdGF0ZS5tYXhTaXplPy53aWR0aCB8fCAwXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInN0YXRlLm1heFNpemU/LmhlaWdodCB8fCAwXCJcbiAgICBbc3R5bGUubWFyZ2luLWxlZnRdPVwiYWxpZ25JbWFnZSA9PT0gJ2NlbnRlcicgPyBtYXJnaW5MZWZ0IDogbnVsbFwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmd4LWljLWNyb3BwZXJcIlxuICAgICpuZ0lmPVwiaW1hZ2VWaXNpYmxlXCJcbiAgICBbY2xhc3Mubmd4LWljLXJvdW5kXT1cInN0YXRlLm9wdGlvbnMucm91bmRDcm9wcGVyXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0YXRlLm9wdGlvbnMuY3JvcHBlckZyYW1lQXJpYUxhYmVsXCJcbiAgICBbc3R5bGUudG9wLnB4XT1cInN0YXRlLmNyb3BwZXIueTFcIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cInN0YXRlLmNyb3BwZXIueDFcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJzdGF0ZS5jcm9wcGVyLngyIC0gc3RhdGUuY3JvcHBlci54MVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJzdGF0ZS5jcm9wcGVyLnkyIC0gc3RhdGUuY3JvcHBlci55MVwiXG4gICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cInN0YXRlLm9wdGlvbnMuYWxpZ25JbWFnZSA9PT0gJ2NlbnRlcicgPyBtYXJnaW5MZWZ0IDogbnVsbFwiXG4gICAgW3N0eWxlLnZpc2liaWxpdHldPVwiaW1hZ2VWaXNpYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICAgIChrZXlkb3duKT1cImtleWJvYXJkQWNjZXNzKCRldmVudClcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5Nb3ZlKVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuTW92ZSlcIlxuICAgICAgY2xhc3M9XCJuZ3gtaWMtbW92ZVwiXG4gICAgICByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCIhc3RhdGUub3B0aW9ucy5oaWRlUmVzaXplU3F1YXJlcyAmJiAhKHN0YXRlLm9wdGlvbnMuY3JvcHBlclN0YXRpY1dpZHRoICYmIHN0YXRlLm9wdGlvbnMuY3JvcHBlclN0YXRpY0hlaWdodClcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZSBuZ3gtaWMtdG9wbGVmdFwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICd0b3BsZWZ0JylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAndG9wbGVmdCcpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtcmVzaXplIG5neC1pYy10b3BcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJuZ3gtaWMtcmVzaXplIG5neC1pYy10b3ByaWdodFwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICd0b3ByaWdodCcpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ3RvcHJpZ2h0JylcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5neC1pYy1zcXVhcmVcIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cIm5neC1pYy1yZXNpemUgbmd4LWljLXJpZ2h0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWljLXNxdWFyZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZSBuZ3gtaWMtYm90dG9tcmlnaHRcIlxuICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnYm90dG9tcmlnaHQnKVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdib3R0b21yaWdodCcpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtcmVzaXplIG5neC1pYy1ib3R0b21cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJuZ3gtaWMtcmVzaXplIG5neC1pYy1ib3R0b21sZWZ0XCJcbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ2JvdHRvbWxlZnQnKVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdib3R0b21sZWZ0JylcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5neC1pYy1zcXVhcmVcIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cIm5neC1pYy1yZXNpemUgbmd4LWljLWxlZnRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtaWMtc3F1YXJlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJuZ3gtaWMtcmVzaXplLWJhciBuZ3gtaWMtdG9wXCJcbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ3RvcCcpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ3RvcCcpXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm5neC1pYy1yZXNpemUtYmFyIG5neC1pYy1yaWdodFwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdyaWdodCcpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwic3RhcnRNb3ZlKCRldmVudCwgbW92ZVR5cGVzLlJlc2l6ZSwgJ3JpZ2h0JylcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibmd4LWljLXJlc2l6ZS1iYXIgbmd4LWljLWJvdHRvbVwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdib3R0b20nKVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdib3R0b20nKVwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJuZ3gtaWMtcmVzaXplLWJhciBuZ3gtaWMtbGVmdFwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0TW92ZSgkZXZlbnQsIG1vdmVUeXBlcy5SZXNpemUsICdsZWZ0JylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJzdGFydE1vdmUoJGV2ZW50LCBtb3ZlVHlwZXMuUmVzaXplLCAnbGVmdCcpXCJcbiAgICAgID48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -136,4 +136,4 @@ export class CropService {
136
136
  return Math.min(1, Math.max(0, options.imageQuality / 100));
137
137
  }
138
138
  }
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RCxNQUFNLE9BQU8sV0FBVztJQUl0QixJQUFJLENBQUMsWUFBMEIsRUFBRSxNQUFrQjtRQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBc0IsQ0FBQztRQUN6RSxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN6QixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUzQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7WUFDaEQsR0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNyRCxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NB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QyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcm9wcGVyT3B0aW9ucywgQ3JvcHBlclBvc2l0aW9uLCBJbWFnZUNyb3BwZWRFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ3JvcHBlclN0YXRlIH0gZnJvbSAnLi4vY29tcG9uZW50L2Nyb3BwZXIuc3RhdGUnO1xuaW1wb3J0IHsgcmVzaXplQ2FudmFzIH0gZnJvbSAnLi4vdXRpbHMvcmVzaXplLnV0aWxzJztcbmltcG9ydCB7IHBlcmNlbnRhZ2UgfSBmcm9tICcuLi91dGlscy9wZXJjZW50YWdlLnV0aWxzJztcbmltcG9ydCB7IE91dHB1dFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nyb3BwZXItb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgQ3JvcFNlcnZpY2Uge1xuXG4gIGNyb3AoY3JvcHBlclN0YXRlOiBDcm9wcGVyU3RhdGUsIG91dHB1dDogJ2Jsb2InKTogUHJvbWlzZTxJbWFnZUNyb3BwZWRFdmVudD4gfCBudWxsO1xuICBjcm9wKGNyb3BwZXJTdGF0ZTogQ3JvcHBlclN0YXRlLCBvdXRwdXQ6ICdiYXNlNjQnKTogSW1hZ2VDcm9wcGVkRXZlbnQgfCBudWxsO1xuICBjcm9wKGNyb3BwZXJTdGF0ZTogQ3JvcHBlclN0YXRlLCBvdXRwdXQ6IE91dHB1dFR5cGUpOiBQcm9taXNlPEltYWdlQ3JvcHBlZEV2ZW50PiB8IEltYWdlQ3JvcHBlZEV2ZW50IHwgbnVsbCB7XG4gICAgY29uc3QgaW1hZ2VQb3NpdGlvbiA9IHRoaXMuZ2V0SW1hZ2VQb3NpdGlvbihjcm9wcGVyU3RhdGUpO1xuICAgIGNvbnN0IHdpZHRoID0gaW1hZ2VQb3NpdGlvbi54MiAtIGltYWdlUG9zaXRpb24ueDE7XG4gICAgY29uc3QgaGVpZ2h0ID0gaW1hZ2VQb3NpdGlvbi55MiAtIGltYWdlUG9zaXRpb24ueTE7XG4gICAgY29uc3QgY3JvcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpIGFzIEhUTUxDYW52YXNFbGVtZW50O1xuICAgIGNyb3BDYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICBjcm9wQ2FudmFzLmhlaWdodCA9IGhlaWdodDtcblxuICAgIGNvbnN0IGN0eCA9IGNyb3BDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoIWN0eCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChjcm9wcGVyU3RhdGUub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgIT0gbnVsbCkge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IGNyb3BwZXJTdGF0ZS5vcHRpb25zLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2FsZVggPSAoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS5zY2FsZSB8fCAxKSAqIChjcm9wcGVyU3RhdGUudHJhbnNmb3JtLmZsaXBIID8gLTEgOiAxKTtcbiAgICBjb25zdCBzY2FsZVkgPSAoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS5zY2FsZSB8fCAxKSAqIChjcm9wcGVyU3RhdGUudHJhbnNmb3JtLmZsaXBWID8gLTEgOiAxKTtcbiAgICBjb25zdCB7dHJhbnNsYXRlSCwgdHJhbnNsYXRlVn0gPSB0aGlzLmdldENhbnZhc1RyYW5zbGF0ZShjcm9wcGVyU3RhdGUpO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRJbWFnZSA9IGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQ7XG4gICAgY3R4LnNldFRyYW5zZm9ybShzY2FsZVgsIDAsIDAsIHNjYWxlWSwgdHJhbnNmb3JtZWRJbWFnZS5zaXplLndpZHRoIC8gMiArIHRyYW5zbGF0ZUgsIHRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS5oZWlnaHQgLyAyICsgdHJhbnNsYXRlVik7XG4gICAgY3R4LnRyYW5zbGF0ZSgtaW1hZ2VQb3NpdGlvbi54MSAvIHNjYWxlWCwgLWltYWdlUG9zaXRpb24ueTEgLyBzY2FsZVkpO1xuICAgIGN0eC5yb3RhdGUoKGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0ucm90YXRlIHx8IDApICogTWF0aC5QSSAvIDE4MCk7XG5cbiAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgdHJhbnNmb3JtZWRJbWFnZS5pbWFnZSxcbiAgICAgIC10cmFuc2Zvcm1lZEltYWdlLnNpemUud2lkdGggLyAyLFxuICAgICAgLXRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS5oZWlnaHQgLyAyXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdDogSW1hZ2VDcm9wcGVkRXZlbnQgPSB7XG4gICAgICB3aWR0aCwgaGVpZ2h0LFxuICAgICAgaW1hZ2VQb3NpdGlvbixcbiAgICAgIGNyb3BwZXJQb3NpdGlvbjogey4uLmNyb3BwZXJTdGF0ZS5jcm9wcGVyfVxuICAgIH07XG4gICAgaWYgKGNyb3BwZXJTdGF0ZS5vcHRpb25zLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgcmVzdWx0Lm9mZnNldEltYWdlUG9zaXRpb24gPSB0aGlzLmdldE9mZnNldEltYWdlUG9zaXRpb24oY3JvcHBlclN0YXRlKTtcbiAgICB9XG4gICAgY29uc3QgcmVzaXplUmF0aW8gPSB0aGlzLmdldFJlc2l6ZVJhdGlvKHdpZHRoLCBoZWlnaHQsIGNyb3BwZXJTdGF0ZS5vcHRpb25zKTtcbiAgICBpZiAocmVzaXplUmF0aW8gIT09IDEpIHtcbiAgICAgIHJlc3VsdC53aWR0aCA9IE1hdGgucm91bmQod2lkdGggKiByZXNpemVSYXRpbyk7XG4gICAgICByZXN1bHQuaGVpZ2h0ID0gY3JvcHBlclN0YXRlLm9wdGlvbnMubWFpbnRhaW5Bc3BlY3RSYXRpb1xuICAgICAgICA/IE1hdGgucm91bmQocmVzdWx0LndpZHRoIC8gY3JvcHBlclN0YXRlLm9wdGlvbnMuYXNwZWN0UmF0aW8pXG4gICAgICAgIDogTWF0aC5yb3VuZChoZWlnaHQgKiByZXNpemVSYXRpbyk7XG4gICAgICByZXNpemVDYW52YXMoY3JvcENhbnZhcywgcmVzdWx0LndpZHRoLCByZXN1bHQuaGVpZ2h0KTtcbiAgICB9XG4gICAgaWYgKG91dHB1dCA9PT0gJ2Jsb2InKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcm9wVG9CbG9iKHJlc3VsdCwgY3JvcENhbnZhcywgY3JvcHBlclN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LmJhc2U2NCA9IGNyb3BDYW52YXMudG9EYXRhVVJMKCdpbWFnZS8nICsgY3JvcHBlclN0YXRlLm9wdGlvbnMuZm9ybWF0LCB0aGlzLmdldFF1YWxpdHkoY3JvcHBlclN0YXRlLm9wdGlvbnMpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcm9wVG9CbG9iKG91dHB1dDogSW1hZ2VDcm9wcGVkRXZlbnQsIGNyb3BDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LCBjcm9wcGVyU3RhdGU6IENyb3BwZXJTdGF0ZSk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHtcbiAgICBvdXRwdXQuYmxvYiA9IGF3YWl0IG5ldyBQcm9taXNlPEJsb2IgfCBudWxsPihyZXNvbHZlID0+IGNyb3BDYW52YXMudG9CbG9iKHJlc29sdmUsICdpbWFnZS8nICsgY3JvcHBlclN0YXRlLm9wdGlvbnMuZm9ybWF0LCB0aGlzLmdldFF1YWxpdHkoY3JvcHBlclN0YXRlLm9wdGlvbnMpKSk7XG4gICAgaWYgKG91dHB1dC5ibG9iKSB7XG4gICAgICBvdXRwdXQub2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChvdXRwdXQuYmxvYik7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIGdldENhbnZhc1RyYW5zbGF0ZShjcm9wcGVyU3RhdGU6IENyb3BwZXJTdGF0ZSk6IHsgdHJhbnNsYXRlSDogbnVtYmVyLCB0cmFuc2xhdGVWOiBudW1iZXIgfSB7XG4gICAgaWYgKGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0udHJhbnNsYXRlVW5pdCA9PT0gJ3B4Jykge1xuICAgICAgY29uc3QgcmF0aW8gPSB0aGlzLmdldFJhdGlvKGNyb3BwZXJTdGF0ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2xhdGVIOiAoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVIIHx8IDApICogcmF0aW8sXG4gICAgICAgIHRyYW5zbGF0ZVY6IChjcm9wcGVyU3RhdGUudHJhbnNmb3JtLnRyYW5zbGF0ZVYgfHwgMCkgKiByYXRpb1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNsYXRlSDogY3JvcHBlclN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVIID8gcGVyY2VudGFnZShjcm9wcGVyU3RhdGUudHJhbnNmb3JtLnRyYW5zbGF0ZUgsIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCkgOiAwLFxuICAgICAgICB0cmFuc2xhdGVWOiBjcm9wcGVyU3RhdGUudHJhbnNmb3JtLnRyYW5zbGF0ZVYgPyBwZXJjZW50YWdlKGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0udHJhbnNsYXRlViwgY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCkgOiAwXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmF0aW8oY3JvcHBlclN0YXRlOiBDcm9wcGVyU3RhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUud2lkdGggLyBjcm9wcGVyU3RhdGUubWF4U2l6ZSEud2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGdldEltYWdlUG9zaXRpb24oY3JvcHBlclN0YXRlOiBDcm9wcGVyU3RhdGUpOiBDcm9wcGVyUG9zaXRpb24ge1xuICAgIGNvbnN0IHJhdGlvID0gdGhpcy5nZXRSYXRpbyhjcm9wcGVyU3RhdGUpO1xuICAgIGNvbnN0IG91dDogQ3JvcHBlclBvc2l0aW9uID0ge1xuICAgICAgeDE6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueDEgKiByYXRpbyksXG4gICAgICB5MTogTWF0aC5yb3VuZChjcm9wcGVyU3RhdGUuY3JvcHBlci55MSAqIHJhdGlvKSxcbiAgICAgIHgyOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLngyICogcmF0aW8pLFxuICAgICAgeTI6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueTIgKiByYXRpbylcbiAgICB9O1xuXG4gICAgaWYgKCFjcm9wcGVyU3RhdGUub3B0aW9ucy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8pIHtcbiAgICAgIG91dC54MSA9IE1hdGgubWF4KG91dC54MSwgMCk7XG4gICAgICBvdXQueTEgPSBNYXRoLm1heChvdXQueTEsIDApO1xuICAgICAgb3V0LngyID0gTWF0aC5taW4ob3V0LngyLCBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpO1xuICAgICAgb3V0LnkyID0gTWF0aC5taW4ob3V0LnkyLCBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPZmZzZXRJbWFnZVBvc2l0aW9uKGNyb3BwZXJTdGF0ZTogQ3JvcHBlclN0YXRlKTogQ3JvcHBlclBvc2l0aW9uIHtcbiAgICBjb25zdCBjYW52YXNSb3RhdGlvbiA9IGNyb3BwZXJTdGF0ZS5vcHRpb25zLmNhbnZhc1JvdGF0aW9uICsgY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS5leGlmVHJhbnNmb3JtLnJvdGF0ZTtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMuZ2V0UmF0aW8oY3JvcHBlclN0YXRlKTtcbiAgICBsZXQgb2Zmc2V0WDogbnVtYmVyO1xuICAgIGxldCBvZmZzZXRZOiBudW1iZXI7XG5cbiAgICBpZiAoY2FudmFzUm90YXRpb24gJSAyKSB7XG4gICAgICBvZmZzZXRYID0gKGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAtIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEub3JpZ2luYWwuc2l6ZS5oZWlnaHQpIC8gMjtcbiAgICAgIG9mZnNldFkgPSAoY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCAtIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEub3JpZ2luYWwuc2l6ZS53aWR0aCkgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXRYID0gKGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAtIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEub3JpZ2luYWwuc2l6ZS53aWR0aCkgLyAyO1xuICAgICAgb2Zmc2V0WSA9IChjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUuaGVpZ2h0IC0gY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS5vcmlnaW5hbC5zaXplLmhlaWdodCkgLyAyO1xuICAgIH1cblxuICAgIGNvbnN0IG91dDogQ3JvcHBlclBvc2l0aW9uID0ge1xuICAgICAgeDE6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueDEgKiByYXRpbykgLSBvZmZzZXRYLFxuICAgICAgeTE6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueTEgKiByYXRpbykgLSBvZmZzZXRZLFxuICAgICAgeDI6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueDIgKiByYXRpbykgLSBvZmZzZXRYLFxuICAgICAgeTI6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueTIgKiByYXRpbykgLSBvZmZzZXRZXG4gICAgfTtcblxuICAgIGlmICghY3JvcHBlclN0YXRlLm9wdGlvbnMuY29udGFpbldpdGhpbkFzcGVjdFJhdGlvKSB7XG4gICAgICBvdXQueDEgPSBNYXRoLm1heChvdXQueDEsIDApO1xuICAgICAgb3V0LnkxID0gTWF0aC5tYXgob3V0LnkxLCAwKTtcbiAgICAgIG91dC54MiA9IE1hdGgubWluKG91dC54MiwgY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLndpZHRoKTtcbiAgICAgIG91dC55MiA9IE1hdGgubWluKG91dC55MiwgY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGdldFJlc2l6ZVJhdGlvKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBvcHRpb25zOiBDcm9wcGVyT3B0aW9ucyk6IG51bWJlciB7XG4gICAgY29uc3QgcmF0aW9XaWR0aCA9IG9wdGlvbnMucmVzaXplVG9XaWR0aCAvIHdpZHRoO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gb3B0aW9ucy5yZXNpemVUb0hlaWdodCAvIGhlaWdodDtcbiAgICBjb25zdCByYXRpb3MgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuXG4gICAgaWYgKG9wdGlvbnMucmVzaXplVG9XaWR0aCA+IDApIHtcbiAgICAgIHJhdGlvcy5wdXNoKHJhdGlvV2lkdGgpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5yZXNpemVUb0hlaWdodCA+IDApIHtcbiAgICAgIHJhdGlvcy5wdXNoKHJhdGlvSGVpZ2h0KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSByYXRpb3MubGVuZ3RoID09PSAwID8gMSA6IE1hdGgubWluKC4uLnJhdGlvcyk7XG5cbiAgICBpZiAocmVzdWx0ID4gMSAmJiAhb3B0aW9ucy5vbmx5U2NhbGVEb3duKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5taW4ocmVzdWx0LCAxKTtcbiAgfVxuXG4gIGdldFF1YWxpdHkob3B0aW9uczogQ3JvcHBlck9wdGlvbnMpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBvcHRpb25zLmltYWdlUXVhbGl0eSAvIDEwMCkpO1xuICB9XG59XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RCxNQUFNLE9BQU8sV0FBVztJQUl0QixJQUFJLENBQUMsWUFBMEIsRUFBRSxNQUFrQjtRQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBc0IsQ0FBQztRQUN6RSxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN6QixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUzQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakQsR0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNyRCxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1B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RyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFFN0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JvcHBlck9wdGlvbnMsIENyb3BwZXJQb3NpdGlvbiwgSW1hZ2VDcm9wcGVkRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENyb3BwZXJTdGF0ZSB9IGZyb20gJy4uL2NvbXBvbmVudC9jcm9wcGVyLnN0YXRlJztcbmltcG9ydCB7IHJlc2l6ZUNhbnZhcyB9IGZyb20gJy4uL3V0aWxzL3Jlc2l6ZS51dGlscyc7XG5pbXBvcnQgeyBwZXJjZW50YWdlIH0gZnJvbSAnLi4vdXRpbHMvcGVyY2VudGFnZS51dGlscyc7XG5pbXBvcnQgeyBPdXRwdXRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jcm9wcGVyLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIENyb3BTZXJ2aWNlIHtcblxuICBjcm9wKGNyb3BwZXJTdGF0ZTogQ3JvcHBlclN0YXRlLCBvdXRwdXQ6ICdibG9iJyk6IFByb21pc2U8SW1hZ2VDcm9wcGVkRXZlbnQ+IHwgbnVsbDtcbiAgY3JvcChjcm9wcGVyU3RhdGU6IENyb3BwZXJTdGF0ZSwgb3V0cHV0OiAnYmFzZTY0Jyk6IEltYWdlQ3JvcHBlZEV2ZW50IHwgbnVsbDtcbiAgY3JvcChjcm9wcGVyU3RhdGU6IENyb3BwZXJTdGF0ZSwgb3V0cHV0OiBPdXRwdXRUeXBlKTogUHJvbWlzZTxJbWFnZUNyb3BwZWRFdmVudD4gfCBJbWFnZUNyb3BwZWRFdmVudCB8IG51bGwge1xuICAgIGNvbnN0IGltYWdlUG9zaXRpb24gPSB0aGlzLmdldEltYWdlUG9zaXRpb24oY3JvcHBlclN0YXRlKTtcbiAgICBjb25zdCB3aWR0aCA9IGltYWdlUG9zaXRpb24ueDIgLSBpbWFnZVBvc2l0aW9uLngxO1xuICAgIGNvbnN0IGhlaWdodCA9IGltYWdlUG9zaXRpb24ueTIgLSBpbWFnZVBvc2l0aW9uLnkxO1xuICAgIGNvbnN0IGNyb3BDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICBjcm9wQ2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY3JvcENhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBjb25zdCBjdHggPSBjcm9wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoY3JvcHBlclN0YXRlLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yICE9IG51bGwpIHtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBjcm9wcGVyU3RhdGUub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVYID0gKGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS5mbGlwSCA/IC0xIDogMSk7XG4gICAgY29uc3Qgc2NhbGVZID0gKGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS5mbGlwViA/IC0xIDogMSk7XG4gICAgY29uc3Qge3RyYW5zbGF0ZUgsIHRyYW5zbGF0ZVZ9ID0gdGhpcy5nZXRDYW52YXNUcmFuc2xhdGUoY3JvcHBlclN0YXRlKTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkSW1hZ2UgPSBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkO1xuICAgIGN0eC5zZXRUcmFuc2Zvcm0oc2NhbGVYLCAwLCAwLCBzY2FsZVksIHRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS53aWR0aCAvIDIgKyB0cmFuc2xhdGVILCB0cmFuc2Zvcm1lZEltYWdlLnNpemUuaGVpZ2h0IC8gMiArIHRyYW5zbGF0ZVYpO1xuICAgIGN0eC50cmFuc2xhdGUoLWltYWdlUG9zaXRpb24ueDEgLyBzY2FsZVgsIC1pbWFnZVBvc2l0aW9uLnkxIC8gc2NhbGVZKTtcbiAgICBjdHgucm90YXRlKChjcm9wcGVyU3RhdGUudHJhbnNmb3JtLnJvdGF0ZSB8fCAwKSAqIE1hdGguUEkgLyAxODApO1xuXG4gICAgY3R4LmRyYXdJbWFnZShcbiAgICAgIHRyYW5zZm9ybWVkSW1hZ2UuaW1hZ2UsXG4gICAgICAtdHJhbnNmb3JtZWRJbWFnZS5zaXplLndpZHRoIC8gMixcbiAgICAgIC10cmFuc2Zvcm1lZEltYWdlLnNpemUuaGVpZ2h0IC8gMlxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQ6IEltYWdlQ3JvcHBlZEV2ZW50ID0ge1xuICAgICAgd2lkdGgsIGhlaWdodCxcbiAgICAgIGltYWdlUG9zaXRpb24sXG4gICAgICBjcm9wcGVyUG9zaXRpb246IHsuLi5jcm9wcGVyU3RhdGUuY3JvcHBlcn1cbiAgICB9O1xuICAgIGlmIChjcm9wcGVyU3RhdGUub3B0aW9ucy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8pIHtcbiAgICAgIHJlc3VsdC5vZmZzZXRJbWFnZVBvc2l0aW9uID0gdGhpcy5nZXRPZmZzZXRJbWFnZVBvc2l0aW9uKGNyb3BwZXJTdGF0ZSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc2l6ZVJhdGlvID0gdGhpcy5nZXRSZXNpemVSYXRpbyh3aWR0aCwgaGVpZ2h0LCBjcm9wcGVyU3RhdGUub3B0aW9ucyk7XG4gICAgaWYgKHJlc2l6ZVJhdGlvICE9PSAxKSB7XG4gICAgICByZXN1bHQud2lkdGggPSBNYXRoLnJvdW5kKHdpZHRoICogcmVzaXplUmF0aW8pO1xuICAgICAgcmVzdWx0LmhlaWdodCA9IGNyb3BwZXJTdGF0ZS5vcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW9cbiAgICAgICAgPyBNYXRoLnJvdW5kKHJlc3VsdC53aWR0aCAvIGNyb3BwZXJTdGF0ZS5vcHRpb25zLmFzcGVjdFJhdGlvKVxuICAgICAgICA6IE1hdGgucm91bmQoaGVpZ2h0ICogcmVzaXplUmF0aW8pO1xuICAgICAgcmVzaXplQ2FudmFzKGNyb3BDYW52YXMsIHJlc3VsdC53aWR0aCwgcmVzdWx0LmhlaWdodCk7XG4gICAgfVxuICAgIGlmIChvdXRwdXQgPT09ICdibG9iJykge1xuICAgICAgcmV0dXJuIHRoaXMuY3JvcFRvQmxvYihyZXN1bHQsIGNyb3BDYW52YXMsIGNyb3BwZXJTdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5iYXNlNjQgPSBjcm9wQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvJyArIGNyb3BwZXJTdGF0ZS5vcHRpb25zLmZvcm1hdCwgdGhpcy5nZXRRdWFsaXR5KGNyb3BwZXJTdGF0ZS5vcHRpb25zKSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JvcFRvQmxvYihvdXRwdXQ6IEltYWdlQ3JvcHBlZEV2ZW50LCBjcm9wQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgY3JvcHBlclN0YXRlOiBDcm9wcGVyU3RhdGUpOiBQcm9taXNlPEltYWdlQ3JvcHBlZEV2ZW50PiB7XG4gICAgb3V0cHV0LmJsb2IgPSBhd2FpdCBuZXcgUHJvbWlzZTxCbG9iIHwgbnVsbD4ocmVzb2x2ZSA9PiBjcm9wQ2FudmFzLnRvQmxvYihyZXNvbHZlLCAnaW1hZ2UvJyArIGNyb3BwZXJTdGF0ZS5vcHRpb25zLmZvcm1hdCwgdGhpcy5nZXRRdWFsaXR5KGNyb3BwZXJTdGF0ZS5vcHRpb25zKSkpO1xuICAgIGlmIChvdXRwdXQuYmxvYikge1xuICAgICAgb3V0cHV0Lm9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwob3V0cHV0LmJsb2IpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYW52YXNUcmFuc2xhdGUoY3JvcHBlclN0YXRlOiBDcm9wcGVyU3RhdGUpOiB7IHRyYW5zbGF0ZUg6IG51bWJlciwgdHJhbnNsYXRlVjogbnVtYmVyIH0ge1xuICAgIGlmIChjcm9wcGVyU3RhdGUudHJhbnNmb3JtLnRyYW5zbGF0ZVVuaXQgPT09ICdweCcpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gdGhpcy5nZXRSYXRpbyhjcm9wcGVyU3RhdGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNsYXRlSDogKGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0udHJhbnNsYXRlSCB8fCAwKSAqIHJhdGlvLFxuICAgICAgICB0cmFuc2xhdGVWOiAoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVWIHx8IDApICogcmF0aW9cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zbGF0ZUg6IGNyb3BwZXJTdGF0ZS50cmFuc2Zvcm0udHJhbnNsYXRlSCA/IHBlcmNlbnRhZ2UoY3JvcHBlclN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVILCBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpIDogMCxcbiAgICAgICAgdHJhbnNsYXRlVjogY3JvcHBlclN0YXRlLnRyYW5zZm9ybS50cmFuc2xhdGVWID8gcGVyY2VudGFnZShjcm9wcGVyU3RhdGUudHJhbnNmb3JtLnRyYW5zbGF0ZVYsIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQpIDogMFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJhdGlvKGNyb3BwZXJTdGF0ZTogQ3JvcHBlclN0YXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLndpZHRoIC8gY3JvcHBlclN0YXRlLm1heFNpemUhLndpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWFnZVBvc2l0aW9uKGNyb3BwZXJTdGF0ZTogQ3JvcHBlclN0YXRlKTogQ3JvcHBlclBvc2l0aW9uIHtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMuZ2V0UmF0aW8oY3JvcHBlclN0YXRlKTtcbiAgICBjb25zdCBvdXQ6IENyb3BwZXJQb3NpdGlvbiA9IHtcbiAgICAgIHgxOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLngxICogcmF0aW8pLFxuICAgICAgeTE6IE1hdGgucm91bmQoY3JvcHBlclN0YXRlLmNyb3BwZXIueTEgKiByYXRpbyksXG4gICAgICB4MjogTWF0aC5yb3VuZChjcm9wcGVyU3RhdGUuY3JvcHBlci54MiAqIHJhdGlvKSxcbiAgICAgIHkyOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLnkyICogcmF0aW8pXG4gICAgfTtcblxuICAgIGlmICghY3JvcHBlclN0YXRlLm9wdGlvbnMuY29udGFpbldpdGhpbkFzcGVjdFJhdGlvKSB7XG4gICAgICBvdXQueDEgPSBNYXRoLm1heChvdXQueDEsIDApO1xuICAgICAgb3V0LnkxID0gTWF0aC5tYXgob3V0LnkxLCAwKTtcbiAgICAgIG91dC54MiA9IE1hdGgubWluKG91dC54MiwgY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLndpZHRoKTtcbiAgICAgIG91dC55MiA9IE1hdGgubWluKG91dC55MiwgY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2Zmc2V0SW1hZ2VQb3NpdGlvbihjcm9wcGVyU3RhdGU6IENyb3BwZXJTdGF0ZSk6IENyb3BwZXJQb3NpdGlvbiB7XG4gICAgY29uc3QgY2FudmFzUm90YXRpb24gPSBjcm9wcGVyU3RhdGUub3B0aW9ucy5jYW52YXNSb3RhdGlvbiArIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEuZXhpZlRyYW5zZm9ybS5yb3RhdGU7XG4gICAgY29uc3QgcmF0aW8gPSB0aGlzLmdldFJhdGlvKGNyb3BwZXJTdGF0ZSk7XG4gICAgbGV0IG9mZnNldFg6IG51bWJlcjtcbiAgICBsZXQgb2Zmc2V0WTogbnVtYmVyO1xuXG4gICAgaWYgKGNhbnZhc1JvdGF0aW9uICUgMikge1xuICAgICAgb2Zmc2V0WCA9IChjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUud2lkdGggLSBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLm9yaWdpbmFsLnNpemUuaGVpZ2h0KSAvIDI7XG4gICAgICBvZmZzZXRZID0gKGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQgLSBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLm9yaWdpbmFsLnNpemUud2lkdGgpIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0WCA9IChjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLnRyYW5zZm9ybWVkLnNpemUud2lkdGggLSBjcm9wcGVyU3RhdGUubG9hZGVkSW1hZ2UhLm9yaWdpbmFsLnNpemUud2lkdGgpIC8gMjtcbiAgICAgIG9mZnNldFkgPSAoY3JvcHBlclN0YXRlLmxvYWRlZEltYWdlIS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCAtIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEub3JpZ2luYWwuc2l6ZS5oZWlnaHQpIC8gMjtcbiAgICB9XG5cbiAgICBjb25zdCBvdXQ6IENyb3BwZXJQb3NpdGlvbiA9IHtcbiAgICAgIHgxOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLngxICogcmF0aW8pIC0gb2Zmc2V0WCxcbiAgICAgIHkxOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLnkxICogcmF0aW8pIC0gb2Zmc2V0WSxcbiAgICAgIHgyOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLngyICogcmF0aW8pIC0gb2Zmc2V0WCxcbiAgICAgIHkyOiBNYXRoLnJvdW5kKGNyb3BwZXJTdGF0ZS5jcm9wcGVyLnkyICogcmF0aW8pIC0gb2Zmc2V0WVxuICAgIH07XG5cbiAgICBpZiAoIWNyb3BwZXJTdGF0ZS5vcHRpb25zLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgb3V0LngxID0gTWF0aC5tYXgob3V0LngxLCAwKTtcbiAgICAgIG91dC55MSA9IE1hdGgubWF4KG91dC55MSwgMCk7XG4gICAgICBvdXQueDIgPSBNYXRoLm1pbihvdXQueDIsIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCk7XG4gICAgICBvdXQueTIgPSBNYXRoLm1pbihvdXQueTIsIGNyb3BwZXJTdGF0ZS5sb2FkZWRJbWFnZSEudHJhbnNmb3JtZWQuc2l6ZS5oZWlnaHQpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBnZXRSZXNpemVSYXRpbyh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgb3B0aW9uczogQ3JvcHBlck9wdGlvbnMpOiBudW1iZXIge1xuICAgIGNvbnN0IHJhdGlvV2lkdGggPSBvcHRpb25zLnJlc2l6ZVRvV2lkdGggLyB3aWR0aDtcbiAgICBjb25zdCByYXRpb0hlaWdodCA9IG9wdGlvbnMucmVzaXplVG9IZWlnaHQgLyBoZWlnaHQ7XG4gICAgY29uc3QgcmF0aW9zID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblxuICAgIGlmIChvcHRpb25zLnJlc2l6ZVRvV2lkdGggPiAwKSB7XG4gICAgICByYXRpb3MucHVzaChyYXRpb1dpZHRoKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucmVzaXplVG9IZWlnaHQgPiAwKSB7XG4gICAgICByYXRpb3MucHVzaChyYXRpb0hlaWdodCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gcmF0aW9zLmxlbmd0aCA9PT0gMCA/IDEgOiBNYXRoLm1pbiguLi5yYXRpb3MpO1xuXG4gICAgaWYgKHJlc3VsdCA+IDEgJiYgIW9wdGlvbnMub25seVNjYWxlRG93bikge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKHJlc3VsdCwgMSk7XG4gIH1cblxuICBnZXRRdWFsaXR5KG9wdGlvbnM6IENyb3BwZXJPcHRpb25zKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgb3B0aW9ucy5pbWFnZVF1YWxpdHkgLyAxMDApKTtcbiAgfVxufVxuIl19