@colijnit/corecomponents_v12 260.1.10 → 260.1.12

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.
Files changed (25) hide show
  1. package/README.md +24 -24
  2. package/bundles/colijnit-corecomponents_v12.umd.js +19 -4
  3. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/lib/components/base/base-input.component.js +3 -1
  6. package/esm2015/lib/components/co-dialog/co-dialog.component.js +22 -22
  7. package/esm2015/lib/components/co-dialog-wizard/co-dialog-wizard.component.js +16 -16
  8. package/esm2015/lib/components/filter-item/filter-item.component.js +162 -162
  9. package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +33 -33
  10. package/esm2015/lib/components/input-number-picker/input-number-picker.module.js +1 -1
  11. package/esm2015/lib/components/list-of-values/list-of-values-popup.component.js +6 -2
  12. package/esm2015/lib/components/list-of-values/list-of-values.component.js +2 -2
  13. package/esm2015/lib/components/simple-grid/simple-grid-cell.component.js +31 -31
  14. package/esm2015/lib/components/simple-grid/simple-grid.component.js +189 -181
  15. package/esm2015/lib/core/enum/core-components-icon.enum.js +1 -1
  16. package/esm2015/lib/core/model/core-components-icon-svg.js +1 -1
  17. package/esm2015/lib/directives/screen-configuration/screen-configuration.module.js +1 -1
  18. package/esm2015/public-api.js +1 -1
  19. package/fesm2015/colijnit-corecomponents_v12.js +455 -441
  20. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  21. package/lib/components/base/base-input.component.d.ts +1 -0
  22. package/lib/components/calendar/style/_material-definition.scss +46 -46
  23. package/lib/components/simple-grid/simple-grid.component.d.ts +2 -1
  24. package/lib/components/simple-grid/style/_layout.scss +7 -25
  25. package/package.json +1 -1
@@ -44,6 +44,7 @@ export class BaseInputComponent {
44
44
  this.keyDown = new EventEmitter();
45
45
  this.keyUp = new EventEmitter();
46
46
  this.modelChange = new EventEmitter();
47
+ this.selectedValueChange = new EventEmitter();
47
48
  this.userModelChange = new EventEmitter();
48
49
  this.hiddenChange = new EventEmitter();
49
50
  this.cancelClicked = new EventEmitter();
@@ -792,6 +793,7 @@ BaseInputComponent.propDecorators = {
792
793
  keyDown: [{ type: Output }],
793
794
  keyUp: [{ type: Output }],
794
795
  modelChange: [{ type: Output }],
796
+ selectedValueChange: [{ type: Output }],
795
797
  userModelChange: [{ type: Output }],
796
798
  hiddenChange: [{ type: Output }],
797
799
  cancelClicked: [{ type: Output }],
@@ -855,4 +857,4 @@ __decorate([
855
857
  __decorate([
856
858
  InputBoolean()
857
859
  ], BaseInputComponent.prototype, "noFormGroupControl", void 0);
858
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUVqQix3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdDLE9BQU8sRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuSCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7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QWdCO3lCQUs1QixXQUFXLFNBQUMsaUJBQWlCO3lCQUs3QixXQUFXLFNBQUMsZ0JBQWdCOzZCQUs1QixXQUFXLFNBQUMsMEJBQTBCO29CQUt0QyxXQUFXLFNBQUMsYUFBYTtpQ0FLekIsV0FBVyxTQUFDLHFCQUFxQjtzQkFLakMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzt3QkFVaEMsWUFBWSxTQUFDLFNBQVM7NEJBaUJ0QixZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQXZVbkM7SUFEVSxZQUFZLEVBQUU7d0RBQ2E7QUFHckM7SUFEVSxZQUFZLEVBQUU7cURBQ0U7QUFHMUI7SUFEVSxZQUFZLEVBQUU7d0RBQ0s7QUF3RjdCO0lBRFUsWUFBWSxFQUFFO3lEQUNjO0FBb0l0QztJQURVLFlBQVksRUFBRTt1REFDWTtBQUdwQztJQURVLFlBQVksRUFBRTt3REFDYTtBQUdyQztJQURVLFlBQVksRUFBRTs2REFDa0I7QUFHMUM7SUFEVSxZQUFZLEVBQUU7d0RBQ2E7QUFHckM7SUFEVSxZQUFZLEVBQUU7cURBQ1U7QUFHbEM7SUFEVSxZQUFZLEVBQUU7cURBQ1U7QUFHbEM7SUFEVSxZQUFZLEVBQUU7a0VBQ3VCO0FBRy9DO0lBRFUsWUFBWSxFQUFFOzhEQUNtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnRGYWN0b3J5LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb21wb25lbnRSZWYsIENvbnRlbnRDaGlsZCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBc3luY1ZhbGlkYXRvckZuLCBGb3JtQ29udHJvbCwgTmdNb2RlbCwgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvbic7XHJcbmltcG9ydCB7bm90TmlsbH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbi9ub3QtbmlsbC5mdW5jdGlvbic7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFuLCBJbnB1dEJvb2xlYW5EZWNvcmF0b3J9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yJztcclxuaW1wb3J0IHtyZXF1aXJlZFZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0b3IvcmVxdWlyZWQudmFsaWRhdG9yJztcclxuaW1wb3J0IHtwcmVjaXNpb25TY2FsZVZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0b3IvcHJlY2lzaW9uLXNjYWxlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7bWF4U3RyaW5nTGVuZ3RoVmFsaWRhdG9yfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRvci9tYXgtc3RyaW5nLWxlbmd0aC52YWxpZGF0b3InO1xyXG5pbXBvcnQge1N0cmluZ1V0aWxzfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL3N0cmluZy11dGlscyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge051bWJlclV0aWxzfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL251bWJlci11dGlscyc7XHJcbmltcG9ydCB7Tmdab25lV3JhcHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VmFsaWRhdGlvbkVycm9yQ29tcG9uZW50fSBmcm9tICcuLi92YWxpZGF0aW9uLWVycm9yL3ZhbGlkYXRpb24tZXJyb3IuY29tcG9uZW50JztcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci5jb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtPdmVybGF5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9vdmVybGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbW1pdEJ1dHRvbnNDb21wb25lbnR9IGZyb20gJy4vY29tbWl0LWJ1dHRvbnMvY29tbWl0LWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdHlwZS9vYmplY3QtY29uZmlndXJhdGlvbi1kZWZhdWx0LXZhbHVlLXR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGFsbCBjb25jcmV0ZSBmb3JtIGlucHV0IGNvbXBvbmVudHMgdGhhdCBjb250YWluIGEgbmF0aXZlIDxpbnB1dD4gZWxlbWVudC4gUHJvdmlkZXMgY29tbW9uIGRhdGEgYW5kIGZ1bmN0aW9uYWxpdHksIHN1Y2ggYXNcclxuICogYWRkaW5nIHNlbGYgYXMgYSBjb250cm9sIHRvIHRoZSBwYXJlbnQgZm9ybS5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSW5wdXRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgU2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBAVmlld0NoaWxkKCd2YWxpZGF0aW9uRXJyb3InLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXHJcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvckNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZChOZ01vZGVsLCB7c3RhdGljOiB0cnVlfSlcclxuICBwdWJsaWMgX25nTW9kZWw6IE5nTW9kZWw7XHJcblxyXG4gIHB1YmxpYyBnZXQgbmdNb2RlbCgpOiBOZ01vZGVsIHtcclxuICAgIGlmICh0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlLm5nTW9kZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbmdNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBzdGF0aWMgSGlkZGVuQ2xhc3M6IHN0cmluZyA9ICdoaWRkZW4nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93U2F2ZUNhbmNlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZWwodmFsdWU6IFQpIHtcclxuICAgIGlmICghdGhpcy5faW5pdGlhbE1vZGVsU2V0KSB7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxNb2RlbCA9IHRoaXMuX21vZGVsO1xyXG4gICAgICB0aGlzLl9pbml0aWFsTW9kZWxTZXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FuU2F2ZU9yQ2FuY2VsID0gdGhpcy5fbW9kZWwgIT09IHRoaXMuX2luaXRpYWxNb2RlbDtcclxuICAgIHRoaXMuX21vZGVsRGlydHlGb3JDb21taXQgPSB0aGlzLl9tb2RlbCAhPT0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbXBvbmVudCgpO1xyXG4gICAgdGhpcy5tb2RlbFNldCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtb2RlbCgpOiBUIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub1ZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIGluaXRGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vQ2xpY2tGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgLy8gdXNlZCB0byBsaW5rIGZpZWxkIHRvIGJ1c2luZXNzIG9iamVjdCBmb3IgZGVlcC12YWxpZGF0aW9uXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYnVzaW5lc3NPYmplY3RJZDogYW55O1xyXG5cclxuICAvLyBASW5wdXQoKVxyXG4gIC8vIHB1YmxpYyBlcnJvck1lc3NhZ2U6IFZhbGlkYXRpb25NZXNzYWdlO1xyXG5cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkaXNhYmxlZCA9PT0gdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihkaXNhYmxlZCk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXRNYXhMZW5ndGgobWF4TGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbm90TmlsbCh0aGlzLmZvcmNlZE1heExlbmd0aCkgPyB0aGlzLmZvcmNlZE1heExlbmd0aCA6IHRoaXMuX21heExlbmd0aDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZSkge1xyXG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKTogT2JqZWN0Q29uZmlndXJhdGlvbkRlZmF1bHRWYWx1ZVR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZvcmNlZE1heExlbmd0aDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9mb3JjZVJlYWRvbmx5ICE9PSB1bmRlZmluZWQgfHwgcmVhZG9ubHkgPT09IHRoaXMuX3JlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3JlYWRvbmx5ID0gSW5wdXRCb29sZWFuRGVjb3JhdG9yLklucHV0VmFsdWVUb0Jvb2xlYW4ocmVhZG9ubHkpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9yY2VSZWFkb25seSB8fCB0aGlzLl9yZWFkb25seTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JjZVJlYWRvbmx5KGZvcmNlUmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmIChmb3JjZVJlYWRvbmx5ID09PSB0aGlzLl9mb3JjZVJlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2ZvcmNlUmVhZG9ubHkgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihmb3JjZVJlYWRvbmx5KTtcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9yY2VSZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAocmVxdWlyZWQgPT09IHRoaXMuX3JlcXVpcmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3JlcXVpcmVkID0gSW5wdXRCb29sZWFuRGVjb3JhdG9yLklucHV0VmFsdWVUb0Jvb2xlYW4ocmVxdWlyZWQpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcmNlUmVxdWlyZWQgfHwgdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgZm9yY2VSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gYSBmb3JjZSBvdXRzaWRlIG9mIFtjZmdOYW1lXSdzIGluZmx1ZW5jZVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdKSB7XHJcbiAgICBpZiAodmFsaWRhdG9ycyA9PT0gdGhpcy5fdmFsaWRhdG9ycykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl92YWxpZGF0b3JzID0gdmFsaWRhdG9ycztcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10pIHtcclxuICAgIHRoaXMuX2FzeW5jVmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFzeW5jVmFsaWRhdG9ycygpOiBBc3luY1ZhbGlkYXRvckZuW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuJyArIEJhc2VJbnB1dENvbXBvbmVudC5IaWRkZW5DbGFzcylcclxuICBwdWJsaWMgc2V0IGhpZGRlbihoaWRkZW46IGJvb2xlYW4pIHtcclxuICAgIGlmIChoaWRkZW4gPT09IHRoaXMuX2hpZGRlbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faGlkZGVuID0gaGlkZGVuO1xyXG5cclxuICAgIHRoaXMuX2FkZE9yUmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgaWYgKGhpZGRlbikge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0YWNoKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5yZWF0dGFjaCgpO1xyXG4gICAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICB0aGlzLmRldGVjdENoYW5nZXNBZnRlckFuZ3VsYXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhpZGRlbkNoYW5nZS5lbWl0KGhpZGRlbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhpZGRlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oaWRkZW47XHJcbiAgfVxyXG5cclxuICAvLyBubyBjdXN0b20gc2V0dGVyIGxvZ2ljIGFzIHdpdGggdGhlIG90aGVyICdzY3JlZW4gY29uZmlnIHByb3BzJywgYmVjYXVzZSBjb25jcmV0ZSBmb3JtIGlucHV0IGNvbXBvbmVudHMgaGFuZGxlIHRoaXMgdGhlbXNlbHZlcy5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGVjaW1hbHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZGVjaW1hbHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGVjaW1hbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNpbWFscztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGljb246IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tQ3NzQ2xhc3M6IHN0cmluZztcclxuXHJcbiAgLy8gR29hbDogYWJpbGl0eSB0byBlbXVsYXRlIHRoZSByZWQgYmFja2dyb3VuZCBvZiBpbnB1dCBmaWVsZHMgKGZvcm0tc3VibWl0dGVkIGludmFsaWQgc3RhdGUpXHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5jYy1yZWQtZXJyb3ItYmFja2dyb3VuZCcpXHJcbiAgcHVibGljIHJlZEVycm9yQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBteUZvcm1JbnB1dEluc3RhbmNlKHZhbHVlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbXlGb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb21taXRPbkJsdXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyBAT3V0cHV0KClcclxuICAvLyBwdWJsaWMgY29tbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gZW1pdHMgd2hlbiB0aGUgZW50ZXIgYnV0dG9uIG9uIGtleWJvYXJkIHdhcyBwcmVzc2VkIHdoaWxlIHRoaXMgZm9ybSBpbnB1dCBoYWQgZm9jdXNzZWRcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkga2V5RG93bjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBrZXlVcDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGhpZGRlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FuY2VsQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNjLWlucHV0LWZvY3VzZWQnKVxyXG4gIHB1YmxpYyBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBmb3JtQ29tcG9uZW50OiBGb3JtQ29tcG9uZW50O1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvcm0taW5wdXQnKVxyXG4gIHB1YmxpYyBmb3JtSW5wdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXN0b20td2lkdGgnKVxyXG4gIHB1YmxpYyBjdXN0b21XaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXN0b20taGVpZ2h0JylcclxuICBwdWJsaWMgY3VzdG9tSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub1RyaWFuZ2xlR3JhcGhpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMga2VlcEZvY3Vzc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhbGYtd2lkdGgnKVxyXG4gIHB1YmxpYyBoYWxmV2lkdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZygnY2xhc3MuZnVsbC13aWR0aC1pbXBvcnRhbnQnKVxyXG4gIHB1YmxpYyBmdWxsV2lkdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIGV4Y2x1ZGVVc2VyTW9kZWxDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vRm9ybUdyb3VwQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvcm0tc3VibWl0dGVkJylcclxuICBwdWJsaWMgZ2V0IGZvcm1TdWJtaXR0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29tcG9uZW50ICYmIHRoaXMuZm9ybUNvbXBvbmVudC5zdWJtaXR0ZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhc25vbGFiZWwnKVxyXG4gIHB1YmxpYyBnZXQgaGFzTm9MYWJlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpc05pbGwodGhpcy5sYWJlbCk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhc3ZhbHVlJylcclxuICBwdWJsaWMgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICghQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSAmJiAhIXRoaXMubW9kZWwgfHwgU3RyaW5nVXRpbHMuSXNTdHJpbmdXaXRoTGVuZ3RoKHRoaXMubW9kZWwpIHx8IE51bWJlclV0aWxzLklzTnVtYmVyKHRoaXMubW9kZWwpKSB8fFxyXG4gICAgICAoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnZhbGlkJylcclxuICBwdWJsaWMgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tTdGF0ZSgpICYmICF0aGlzLmNvbnRyb2wudmFsaWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcclxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlYWQtb25seScpXHJcbiAgcHVibGljIGdldCBpc1JlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlcXVpcmVkJylcclxuICBwdWJsaWMgZ2V0IGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2MtdG91Y2hlZC1pbnZhbGlkJylcclxuICBwdWJsaWMgZ2V0IHRvdWNoZWRJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xFeGlzdHMoKSAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiAhdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy52YWxpZCcpXHJcbiAgcHVibGljIGdldCB2YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGVja1N0YXRlKCkgJiYgdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uby12YWxpZGF0aW9uJylcclxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25EaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5ub1ZhbGlkYXRpb247XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FuQ2hhbmdlICYmICF0aGlzLm5vQ2xpY2tGb2N1cykge1xyXG4gICAgICB0aGlzLnJlcXVlc3RGb2N1cygpO1xyXG4gICAgICBpZiAoIXRoaXMuZXhjbHVkZVVzZXJNb2RlbENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMubWFya0FzVXNlclRvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicpXHJcbiAgb25Gb2N1c0luKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmV4Y2x1ZGVVc2VyTW9kZWxDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5tYXJrQXNVc2VyVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OnNjcm9sbFwiKVxyXG4gIC8vIHB1YmxpYyBoYW5kbGVEb2N1bWVudFNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuX3Bvc2l0aW9uVmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gIC8vIHB1YmxpYyBoYW5kbGVXaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLl9wb3NpdGlvblZhbGlkYXRpb25FcnJvcigpO1xyXG4gIC8vIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMua2V5RG93bi5uZXh0KGV2ZW50KTtcclxuICAgIGlmICh0aGlzLnNob3dTYXZlQ2FuY2VsICYmIHRoaXMuY2FuU2F2ZU9yQ2FuY2VsKSB7XHJcbiAgICAgIHRoaXMuX2hhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5fcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ2hhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb250cm9sKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZS5jb250cm9sIDogdGhpcy5uZ01vZGVsICYmIHRoaXMubmdNb2RlbC5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UgfHwgdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNEZXN0cm95ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveWVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcclxuXHJcbiAgcHVibGljIGtlZXBGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5jZWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgY29uZGl0aW9uUmVzb2x2ZXIhOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XHJcblxyXG4gIHB1YmxpYyBzZXQgY2FuU2F2ZU9yQ2FuY2VsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jYW5TYXZlT3JDYW5jZWwgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnNob3dTYXZlQ2FuY2VsICYmIHRoaXMuZm9jdXNlZCAmJiB0aGlzLl9jYW5TYXZlT3JDYW5jZWwpIHtcclxuICAgICAgaWYgKCF0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZiA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KENvbW1pdEJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBhcmVudEZvck92ZXJsYXk6IHRoaXMuZWxlbWVudFJlZixcclxuICAgICAgICAgICAgY29tbWl0dGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbW1pdEZpbmlzaGVkOiBmYWxzZVxyXG4gICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICBjb21taXRDbGljazogKGV2ZW50KSA9PiB0aGlzLl9oYW5kbGVDb21taXQoZXZlbnQpLFxyXG4gICAgICAgICAgICBjYW5jZWxDbGljazogKGV2ZW50KSA9PiB0aGlzLmNhbmNlbENsaWNrKGV2ZW50KVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYpO1xyXG4gICAgICB0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5TYXZlT3JDYW5jZWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuU2F2ZU9yQ2FuY2VsO1xyXG4gIH1cclxuXHJcbiAgLy8gQGltcGxlbWVudHMgQ29uZmlndXJhdGlvbkFkYXB0ZXJDb21wb25lbnRcclxuICBwdWJsaWMgb2JqZWN0Q29uZmlnTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3I6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcm90ZWN0ZWQgX21hcmtlZEFzVXNlclRvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF9kZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX2hhc09uUHVzaENkU3RyYXRlZ3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX21vZGVsOiBUO1xyXG4gIHByb3RlY3RlZCBfbW9kZWxEaXJ0eUZvckNvbW1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBfaW5pdGlhbE1vZGVsOiBUO1xyXG4gIHByb3RlY3RlZCBfaW5pdGlhbE1vZGVsU2V0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX215Rm9ybUlucHV0SW5zdGFuY2U6IEJhc2VJbnB1dENvbXBvbmVudDxUPjtcclxuICBwcml2YXRlIF9lcnJvclZhbGlkYXRpb25Db21wb25lbnQ6IENvbXBvbmVudFJlZjxWYWxpZGF0aW9uRXJyb3JDb21wb25lbnQ+O1xyXG4gIHByaXZhdGUgX2RlY2ltYWxzOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGlkZGVuOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX21heExlbmd0aDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZTogT2JqZWN0Q29uZmlndXJhdGlvbkRlZmF1bHRWYWx1ZVR5cGU7XHJcbiAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2ZvcmNlUmVhZG9ubHk6IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgX3ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9zcGVlY2hTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9tb2RlbENoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2Zvcm1BbnlTdWJtaXRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9mb3JtUmVhZG9ubHlDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9jYW5TYXZlT3JDYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByb3RlY3RlZCBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcj86IEZvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBuZ1pvbmVXcmFwcGVyPzogTmdab25lV3JhcHBlclNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZWxlbWVudFJlZj86IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIEJhc2VJbnB1dENvbXBvbmVudC5CYXNlRm9ybUlucHV0Q29tcG9uZW50SW5kZXgrKztcclxuICAgIHRoaXMubmFtZSA9IEJhc2VJbnB1dENvbXBvbmVudC5CYXNlRm9ybUlucHV0Q29tcG9uZW50SW5kZXgudG9TdHJpbmcoKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1YiA9IHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lci5jbGVhckFsbE1hcmtlZEFzVXNlclRvdWNoZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlbENoYW5nZVN1YiA9IHRoaXMubW9kZWxDaGFuZ2Uuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsID0gdmFsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcmVwYXJlSW5wdXQoKTtcclxuXHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcblxyXG4gICAgdGhpcy5fYWRkT3JSZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMucmVhZG9ubHkgPSB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZm9ybUNvbXBvbmVudC5yZWFkb25seTtcclxuICAgICAgdGhpcy5fZm9ybVJlYWRvbmx5Q2hhbmdlU3ViID0gdGhpcy5mb3JtQ29tcG9uZW50LnJlYWRvbmx5Q2hhbmdlLnN1YnNjcmliZSgoaXNGb3JtUmVhZG9ubHk6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gaXNGb3JtUmVhZG9ubHk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmluaXRGb2N1cykge1xyXG4gICAgICBzZXRUaW1lb3V0KHRoaXMucmVxdWVzdEZvY3VzLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZXZlbnQpID0+IHRoaXMuZG9CbHVyKGV2ZW50KSk7XHJcbiAgICAgIHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHRoaXMuZG9Gb2N1cyhldmVudCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLl9jbGVhckVycm9yQ29tcG9uZW50KCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMudG9vbHRpcE1hbmFnZXIgJiYgdGhpcy5lbGVtZW50UmVmKSB7XHJcbiAgICAvLyAgICAgdGhpcy50b29sdGlwTWFuYWdlci5kZXN0cm95RXJyb3JUb29sdGlwT2ZFbGVtZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fbW9kZWxDaGFuZ2VTdWIpIHtcclxuICAgICAgdGhpcy5fbW9kZWxDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zcGVlY2hTdWIpIHtcclxuICAgICAgdGhpcy5fc3BlZWNoU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fZm9ybUFueVN1Ym1pdFN1Yikge1xyXG4gICAgICB0aGlzLl9mb3JtQW55U3VibWl0U3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fZm9ybVJlYWRvbmx5Q2hhbmdlU3ViKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1SZWFkb25seUNoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1Yikge1xyXG4gICAgICB0aGlzLl9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuX3JlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG4gICAgdGhpcy5lbGVtZW50UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaW5wdXQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBkZXNjZW5kZW50cyBzaG91bGQgb3ZlcnJpZGUgdGhpc1xyXG4gIHB1YmxpYyBjb21taXQgPSBhc3luYyAobW9kZWw6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgY2FuY2VsQ2xpY2soZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuY29uZGl0aW9uUmVzb2x2ZXIodGhpcy5jYW5jZWxlZCk7XHJcblxyXG4gICAgdGhpcy5rZWVwRm9jdXMgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX2luaXRpYWxNb2RlbFNldCkge1xyXG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5rZWVwRm9jdXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FuY2VsQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1ZhbGlkYXRpb25FcnJvcihlcnJvcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGVycm9yO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkNvbXBvbmVudFJlZiA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFZhbGlkYXRpb25FcnJvckNvbXBvbmVudCwge3BhcmVudEZvck92ZXJsYXk6IHRoaXMuZWxlbWVudFJlZiwgZXJyb3I6IGVycm9yfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBhIG1vZGVsQ2hhbmdlIGV2ZW50IHdpdGggZ2l2ZW4gdmFsdWUsIGluZGljYXRpbmcgdGhhdCB0aGUgbW9kZWwgb2YgdGhpcyBmb3JtIGlucHV0XHJcbiAgICogaGFzIGNoYW5nZWQgYW5kIGl0cyBuZXcgdmFsdWUgaXMgZ2l2ZW4gdmFsdWUuIEFsc28gZW1pdHMgdXNlck1vZGVsQ2hhbmdlIGlmIG1hcmtlZEFzVXNlclRvdWNoZWQuXHJcbiAgICovXHJcbiAgcHVibGljIHNldE1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wubWFya0FzRGlydHkoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5mb3JtR3JvdXAubWFya0FzRGlydHkoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgJiYgdGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lci51c2VyTW9kZWxDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcXVlc3RGb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbkNoYW5nZSAmJiB0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9Gb2N1cyhldmVudD86IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbml0aWFsTW9kZWxTZXQgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNhblNhdmVPckNhbmNlbCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9jdXMubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YWl0Rm9yQ2FuY2VsQ29uZGl0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUmVzb2x2ZXIgPSByZXNvbHZlOyAvLyBTYXZlIHRoZSByZXNvbHZlciB0byBiZSBjYWxsZWQgbGF0ZXJcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRvQmx1cihldmVudD86IGFueSwgaGFuZGxlQ29tbWl0OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBjYW5jZWxUaW1lb3V0ID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDMwMCkpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLndhaXRGb3JDYW5jZWxDb25kaXRpb24oKSwgY2FuY2VsVGltZW91dF0pO1xyXG4gICAgLy8gSWYgY2FuY2VsZWRcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dTYXZlQ2FuY2VsICYmIGhhbmRsZUNvbW1pdCAmJiB0aGlzLl9tb2RlbERpcnR5Rm9yQ29tbWl0KSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZUNvbW1pdChldmVudCwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmtlZXBGb2N1cyB8fCB0aGlzLmtlZXBGb2N1c3NlZCkge1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5ibHVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ibHVyLm5leHQoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGV0ZWN0Q2hhbmdlc0FmdGVyQW5ndWxhcigpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMubmdab25lV3JhcHBlcikge1xyXG4gICAgICB0aGlzLm5nWm9uZVdyYXBwZXIuc2V0VGltZW91dE91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaW5rcyB0aGUgZ2l2ZW4gZm9ybUNvbXAuc3VibWl0IGV2ZW50IHRvIHRoZSBmaXJpbmcgb2YgZGV0ZWN0Q2hhbmdlcygpIG9mIGdpdmVuIGNoYW5nZSBkZXRlY3Rvci4gVGhpcyBpcyBhICd1dGlsaXR5LWxpa2UnIG1ldGhvZCxcclxuICAgKiBidXQgd2UgbWFuYWdlIHRoZSBhY3R1YWwgc3Vic2NyaXB0aW9uICh3aXRoIFVOU1VCU0NSSUJFKCkhKSBvbiB0aGlzIGJhc2UgY2xhc3MuXHJcbiAgICogQHBhcmFtIGZvcm1Db21wIFRoZSBmb3JtIHdob3NlIHN1Ym1pdCB3ZSB3YW50IHRvIGxpbmsgd2l0aCB0aGUgY2FsbCBvZiAuZGV0ZWN0Q2hhbmdlcygpIG9uIGdpdmVuIGNoYW5nZSBkZXRlY3RvciByZWYuXHJcbiAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFRoaXMgc2hvdWxkIGJlIGdpdmVuIGFzIHBhcmFtLiBJIGNob29zZSBub3QgdG8gbWFrZSB0aGlzIHBhcnQgb2Ygb3VyIChCYXNlRm9ybUlucHV0Q29tcG9uZW50KSBjb25zdHJ1Y3RvcixcclxuICAgKiBiZWNhdXNlIHdlIGFscmVhZHkgaGF2ZSAyMSBleHRlbmRlcnMuXHJcbiAgICovXHJcbiAgLy8gcHVibGljIGxpbmtGb3JtQW55U3VibWl0V2l0aERldGVjdENoYW5nZXMoZm9ybUNvbXA6IEZvcm1Db21wb25lbnQsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gIC8vICAgICBpZiAoZm9ybUNvbXAgJiYgY2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAvLyAgICAgICAgIHRoaXMuX2Zvcm1BbnlTdWJtaXRTdWIgPSBmb3JtQ29tcC5hbnlTdWJtaXQuc3Vic2NyaWJlKCgoKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAvLyAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pKTtcclxuICAvLyAgICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIG1hcmtBc1VzZXJUb3VjaGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlZEVycm9yQmFja2dyb3VuZCA9IGZhbHNlOyAvLyBub3Qgc3VyZSBpZiB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSB0byBkbyB0aGF0XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJNYXJrZWRBc1VzZXJUb3VjaGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG1vZGVsU2V0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIC8vdXNlZCBmb3IgZGVzY2VuZGVudHMsIGJlY2F1c2UgZGVzY2VuZGVudHMgY2FuJ3Qgc2V0IHN1cGVyIHByb3BlcnRpZXMsIHNlZSBJbnB1dE51bWJlckNvbXBvbmVudFxyXG4gIHByb3RlY3RlZCBzZXRNYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChub3ROaWxsKHRoaXMuZm9yY2VkTWF4TGVuZ3RoKSB8fCBtYXhMZW5ndGggPT09IHRoaXMuX21heExlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpc05hTihtYXhMZW5ndGgpKSB7XHJcbiAgICAgIHRoaXMuX21heExlbmd0aCA9IG1heExlbmd0aDtcclxuICAgICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9tYXJrQXNPblB1c2goKTogdm9pZCB7XHJcbiAgICB0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfY2hlY2tTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm5nTW9kZWwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybVN1Ym1pdHRlZCB8fCAodGhpcy5fY29udHJvbEV4aXN0cygpICYmIHRoaXMuY29udHJvbC50b3VjaGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFBsYWNlIHZhbGlkYXRvcnMgb250byBvdXIgQW5ndWxhcidzIEZvcm1Db250cm9sLlxyXG4gIHByb3RlY3RlZCBfdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVyOiBFbGVtZW50UmVmID0gdGhpcy5teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5teUZvcm1JbnB1dEluc3RhbmNlLmVsZW1lbnRSZWYgOiB0aGlzLmVsZW1lbnRSZWY7XHJcbiAgICAvLyBpZiAodGhpcy50b29sdGlwTWFuYWdlciAmJiBlcikge1xyXG4gICAgLy8gICAgIHRoaXMudG9vbHRpcE1hbmFnZXIuZGVzdHJveUVycm9yVG9vbHRpcE9mRWxlbWVudChlci5uYXRpdmVFbGVtZW50KTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuX3NldE5hdGl2ZVJlcXVpcmVkKHRoaXMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5fc2V0TmF0aXZlTWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZURpc2FibGVkKHRoaXMuZGlzYWJsZWQpO1xyXG4gICAgdGhpcy5fc2V0TmF0aXZlUmVhZE9ubHkodGhpcy5yZWFkb25seSB8fCB0aGlzLmZvcmNlUmVhZG9ubHkpO1xyXG5cclxuICAgIHRoaXMucmVkRXJyb3JCYWNrZ3JvdW5kID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5fY29udHJvbEV4aXN0cygpKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICAgIC8vIGFkZCByZXF1aXJlZFxyXG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChyZXF1aXJlZFZhbGlkYXRvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGFkZCBtYXhsZW5ndGhcclxuICAgICAgaWYgKG5vdE5pbGwodGhpcy5fbWF4TGVuZ3RoKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxzKSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gocHJlY2lzaW9uU2NhbGVWYWxpZGF0b3IodGhpcy5fbWF4TGVuZ3RoLCB0aGlzLmRlY2ltYWxzKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChtYXhTdHJpbmdMZW5ndGhWYWxpZGF0b3IodGhpcy5fbWF4TGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBhZGQgQElucHV0KCktZWQgdmFsaWRhdG9yc1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goLi4udGhpcy5fdmFsaWRhdG9ycyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5fdmFsaWRhdG9ycykge1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvcnMuZm9yRWFjaCh2YWxpZGF0b3IgPT4ge1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvciA9PT0gcmVxdWlyZWRWYWxpZGF0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXROYXRpdmVSZXF1aXJlZCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5fYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUNvbW1pdChldmVudD86IE1vdXNlRXZlbnQsIGRvQmx1cjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICghdGhpcy5zaG93U2F2ZUNhbmNlbCB8fCAoIXRoaXMuX21vZGVsRGlydHlGb3JDb21taXQpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5rZWVwRm9jdXMgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYpIHtcclxuICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXRGaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmLmluc3RhbmNlLmNvbW1pdHRpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbW9kZWxEaXJ0eUZvckNvbW1pdCA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29tbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5rZWVwRm9jdXMgPSBmYWxzZTtcclxuICAgIGF3YWl0IHRoaXMuX2NvbW1pdEZpbmlzaGVkKCk7XHJcbiAgICBpZiAoc3VjY2VzcyAmJiBkb0JsdXIpIHtcclxuICAgICAgdGhpcy5kb0JsdXIoZXZlbnQsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29tbWl0RmluaXNoZWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXRGaW5pc2hlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmLmluc3RhbmNlLmNvbW1pdEZpbmlzaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudCh0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9LCA4MDApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbGVhckVycm9yQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vdmVybGF5U2VydmljZS5yZW1vdmVDb21wb25lbnQodGhpcy5fdmFsaWRhdGlvbkNvbXBvbmVudFJlZik7XHJcbiAgfVxyXG5cclxuICAvLyB3aGV0aGVyIHRoaXMubmdNb2RlbC5jb250cm9sIGhhcyBzYWZlIGFjY2Vzc1xyXG4gIHByaXZhdGUgX2NvbnRyb2xFeGlzdHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsICYmICEhdGhpcy5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29udHJvbElzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbEV4aXN0cygpICYmIHRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5hdGl2ZURpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LmRpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXROYXRpdmVNYXhMZW5ndGgobWF4bGVuZ3RoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0ICYmICFpc05hTihtYXhsZW5ndGgpKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubWF4TGVuZ3RoID0gbWF4bGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9zZXROYXRpdmVSZWFkT25seShyZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5yZWFkT25seSA9IHJlYWRvbmx5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TmF0aXZlUmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQucmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvU3BlZWNoSW5wdXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLl9zcGVlY2hTdWIgPSB0aGlzLnNwZWVjaElucHV0LnNwZWVjaElucHV0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgLy8gICAgIGlmICh0aGlzLmZvY3VzZWQgJiYgdGhpcy5fY29udHJvbEV4aXN0cygpKSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IHZhbDogc3RyaW5nID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgLy8gICAgICAgICB0aGlzLnNldE1vZGVsKChTdHJpbmdVdGlscy5Jc1N0cmluZyh2YWwpID8gdmFsIDogJycpICsgZGF0YSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hZGRPclJlbW92ZVNlbGZGcm9tRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZGRlbikge1xyXG4gICAgICB0aGlzLl9yZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2FkZFNlbGZUb0Zvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGZJbkZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC51cGRhdGVGb3JtSW5wdXQodGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZW1vdmVTZWxmRnJvbUZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50ICYmIHRoaXMubmdNb2RlbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQucmVtb3ZlRm9ybUlucHV0KHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRkU2VsZlRvRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQgJiYgdGhpcy5uZ01vZGVsICYmICF0aGlzLm5vRm9ybUdyb3VwQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQucmVtb3ZlRm9ybUlucHV0KHRoaXMpOyAvLyBwcmV2ZW50aW5nIHRoZXJlIGFyZSB0d28gY29udHJvbHMgaW4gZm9ybWdyb3VwIHdoZW4gbXlGb3JtSW5wdXRJbnN0YW5jZSBpcyAoYmVpbmcpIHNldFxyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQuYWRkRm9ybUlucHV0KHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA6IHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZUlucHV0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAvL3RyeSB0byBmaW5kIGlucHV0IGVsZW1lbnRcclxuICAgICAgdGhpcy5fZmluZElucHV0Tm9kZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbik7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGV2ZW50KSA9PiB0aGlzLmRvQmx1cihldmVudCkpO1xyXG4gICAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHRoaXMuZG9Gb2N1cyhldmVudCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maW5kSW5wdXROb2RlKG5vZGVzKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcclxuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dCA9IG5vZGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fZmluZElucHV0Tm9kZShub2RlLmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudCkge1xyXG4gICAgICBjb25zdCBjbGllbnRSZWN0OiBDbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudC5pbnN0YW5jZS50b3AgPSBjbGllbnRSZWN0LmJvdHRvbTtcclxuICAgICAgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50Lmluc3RhbmNlLmxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgX2hhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgY2FzZSAnTnVtcGFkRW50ZXInOlxyXG4gICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkpIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLl9oYW5kbGVDb21taXQoKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGNhc2UgJ1RhYic6XHJcbiAgICAgICAgY29uc3QgbmV4dFNpYmxpbmdUb0ZvY3VzID0gZXZlbnQuc2hpZnRLZXkgPyAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBhbnkpLnByZXZpb3VzU2libGluZyA6IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIGFueSkubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5faGFuZGxlQ29tbWl0KCk7XHJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGlmIChuZXh0U2libGluZ1RvRm9jdXMpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICB0aGlzLl9zZXRGb2N1c09uTmV4dFBvc3NpYmxlSW5wdXQobmV4dFNpYmxpbmdUb0ZvY3VzLCBldmVudC5zaGlmdEtleSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgdGhpcy5jYW5jZWxDbGljaygpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTmV3Rm9jdXNFdmVudChlbGVtZW50OiBhbnkpOiBFdmVudCB7XHJcbiAgICBsZXQgZXZlbnRUeXBlID0gJ29uZm9jdXNpbicgaW4gZWxlbWVudCA/ICdmb2N1c2luJyA6ICdmb2N1cycsXHJcbiAgICAgIGJ1YmJsZXMgPSAnb25mb2N1c2luJyBpbiBlbGVtZW50LFxyXG4gICAgICBmb2N1c0V2ZW50O1xyXG5cclxuICAgIGlmICgnY3JlYXRlRXZlbnQnIGluIGRvY3VtZW50KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcclxuICAgICAgZm9jdXNFdmVudC5pbml0RXZlbnQoZXZlbnRUeXBlLCBidWJibGVzLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoJ0V2ZW50JyBpbiB3aW5kb3cpIHtcclxuICAgICAgZm9jdXNFdmVudCA9IG5ldyBFdmVudChldmVudFR5cGUsIHtidWJibGVzOiBidWJibGVzLCBjYW5jZWxhYmxlOiB0cnVlfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9jdXNFdmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChlbGVtZW50OiBhbnksIHByZXZpb3VzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZWxlbWVudENvbGwgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xyXG4gICAgaWYgKCFlbGVtZW50Q29sbCB8fCBlbGVtZW50Q29sbC5sZW5ndGggPCAxKSB7XHJcbiAgICAgIGVsZW1lbnRDb2xsID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGV4dGFyZWEnKTtcclxuICAgIH1cclxuICAgIGlmIChlbGVtZW50Q29sbCAmJiBlbGVtZW50Q29sbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGVsZW1lbnRDb2xsWzBdO1xyXG4gICAgICBpZiAoaW5wdXRFbGVtZW50LmRpc2FibGVkIHx8IGlucHV0RWxlbWVudC5yZWFkT25seSkge1xyXG4gICAgICAgIHRoaXMuX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChwcmV2aW91cyA/IGVsZW1lbnQucHJldmlvdXNTaWJsaW5nIDogZWxlbWVudC5uZXh0U2libGluZywgcHJldmlvdXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZvY3VzRXZlbnQgPSB0aGlzLl9jcmVhdGVOZXdGb2N1c0V2ZW50KGVsZW1lbnQpO1xyXG4gICAgICAgIGlucHV0RWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIGlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KGZvY3VzRXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
860
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUVqQix3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdDLE9BQU8sRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuSCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7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QyxnQkFBZ0I7c0JBTTVCLFdBQVcsU0FBQyxlQUFlO3lCQUszQixXQUFXLFNBQUMsZ0JBQWdCO3lCQUs1QixXQUFXLFNBQUMsaUJBQWlCO3lCQUs3QixXQUFXLFNBQUMsZ0JBQWdCOzZCQUs1QixXQUFXLFNBQUMsMEJBQTBCO29CQUt0QyxXQUFXLFNBQUMsYUFBYTtpQ0FLekIsV0FBVyxTQUFDLHFCQUFxQjtzQkFLakMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzt3QkFVaEMsWUFBWSxTQUFDLFNBQVM7NEJBaUJ0QixZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQTFVbkM7SUFEVSxZQUFZLEVBQUU7d0RBQ2E7QUFHckM7SUFEVSxZQUFZLEVBQUU7cURBQ0U7QUFHMUI7SUFEVSxZQUFZLEVBQUU7d0RBQ0s7QUF3RjdCO0lBRFUsWUFBWSxFQUFFO3lEQUNjO0FBdUl0QztJQURVLFlBQVksRUFBRTt1REFDWTtBQUdwQztJQURVLFlBQVksRUFBRTt3REFDYTtBQUdyQztJQURVLFlBQVksRUFBRTs2REFDa0I7QUFHMUM7SUFEVSxZQUFZLEVBQUU7d0RBQ2E7QUFHckM7SUFEVSxZQUFZLEVBQUU7cURBQ1U7QUFHbEM7SUFEVSxZQUFZLEVBQUU7cURBQ1U7QUFHbEM7SUFEVSxZQUFZLEVBQUU7a0VBQ3VCO0FBRy9DO0lBRFUsWUFBWSxFQUFFOzhEQUNtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnRGYWN0b3J5LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb21wb25lbnRSZWYsIENvbnRlbnRDaGlsZCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBc3luY1ZhbGlkYXRvckZuLCBGb3JtQ29udHJvbCwgTmdNb2RlbCwgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvbic7XHJcbmltcG9ydCB7bm90TmlsbH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbi9ub3QtbmlsbC5mdW5jdGlvbic7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFuLCBJbnB1dEJvb2xlYW5EZWNvcmF0b3J9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yJztcclxuaW1wb3J0IHtyZXF1aXJlZFZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0b3IvcmVxdWlyZWQudmFsaWRhdG9yJztcclxuaW1wb3J0IHtwcmVjaXNpb25TY2FsZVZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0b3IvcHJlY2lzaW9uLXNjYWxlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7bWF4U3RyaW5nTGVuZ3RoVmFsaWRhdG9yfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRvci9tYXgtc3RyaW5nLWxlbmd0aC52YWxpZGF0b3InO1xyXG5pbXBvcnQge1N0cmluZ1V0aWxzfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL3N0cmluZy11dGlscyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge051bWJlclV0aWxzfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL251bWJlci11dGlscyc7XHJcbmltcG9ydCB7Tmdab25lV3JhcHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VmFsaWRhdGlvbkVycm9yQ29tcG9uZW50fSBmcm9tICcuLi92YWxpZGF0aW9uLWVycm9yL3ZhbGlkYXRpb24tZXJyb3IuY29tcG9uZW50JztcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci5jb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtPdmVybGF5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9vdmVybGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbW1pdEJ1dHRvbnNDb21wb25lbnR9IGZyb20gJy4vY29tbWl0LWJ1dHRvbnMvY29tbWl0LWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdHlwZS9vYmplY3QtY29uZmlndXJhdGlvbi1kZWZhdWx0LXZhbHVlLXR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGFsbCBjb25jcmV0ZSBmb3JtIGlucHV0IGNvbXBvbmVudHMgdGhhdCBjb250YWluIGEgbmF0aXZlIDxpbnB1dD4gZWxlbWVudC4gUHJvdmlkZXMgY29tbW9uIGRhdGEgYW5kIGZ1bmN0aW9uYWxpdHksIHN1Y2ggYXNcclxuICogYWRkaW5nIHNlbGYgYXMgYSBjb250cm9sIHRvIHRoZSBwYXJlbnQgZm9ybS5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSW5wdXRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgU2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBAVmlld0NoaWxkKCd2YWxpZGF0aW9uRXJyb3InLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXHJcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvckNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZChOZ01vZGVsLCB7c3RhdGljOiB0cnVlfSlcclxuICBwdWJsaWMgX25nTW9kZWw6IE5nTW9kZWw7XHJcblxyXG4gIHB1YmxpYyBnZXQgbmdNb2RlbCgpOiBOZ01vZGVsIHtcclxuICAgIGlmICh0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlLm5nTW9kZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbmdNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBzdGF0aWMgSGlkZGVuQ2xhc3M6IHN0cmluZyA9ICdoaWRkZW4nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93U2F2ZUNhbmNlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZWwodmFsdWU6IFQpIHtcclxuICAgIGlmICghdGhpcy5faW5pdGlhbE1vZGVsU2V0KSB7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxNb2RlbCA9IHRoaXMuX21vZGVsO1xyXG4gICAgICB0aGlzLl9pbml0aWFsTW9kZWxTZXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FuU2F2ZU9yQ2FuY2VsID0gdGhpcy5fbW9kZWwgIT09IHRoaXMuX2luaXRpYWxNb2RlbDtcclxuICAgIHRoaXMuX21vZGVsRGlydHlGb3JDb21taXQgPSB0aGlzLl9tb2RlbCAhPT0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbXBvbmVudCgpO1xyXG4gICAgdGhpcy5tb2RlbFNldCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtb2RlbCgpOiBUIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub1ZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIGluaXRGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vQ2xpY2tGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgLy8gdXNlZCB0byBsaW5rIGZpZWxkIHRvIGJ1c2luZXNzIG9iamVjdCBmb3IgZGVlcC12YWxpZGF0aW9uXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYnVzaW5lc3NPYmplY3RJZDogYW55O1xyXG5cclxuICAvLyBASW5wdXQoKVxyXG4gIC8vIHB1YmxpYyBlcnJvck1lc3NhZ2U6IFZhbGlkYXRpb25NZXNzYWdlO1xyXG5cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkaXNhYmxlZCA9PT0gdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihkaXNhYmxlZCk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXRNYXhMZW5ndGgobWF4TGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbm90TmlsbCh0aGlzLmZvcmNlZE1heExlbmd0aCkgPyB0aGlzLmZvcmNlZE1heExlbmd0aCA6IHRoaXMuX21heExlbmd0aDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBPYmplY3RDb25maWd1cmF0aW9uRGVmYXVsdFZhbHVlVHlwZSkge1xyXG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKTogT2JqZWN0Q29uZmlndXJhdGlvbkRlZmF1bHRWYWx1ZVR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZvcmNlZE1heExlbmd0aDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9mb3JjZVJlYWRvbmx5ICE9PSB1bmRlZmluZWQgfHwgcmVhZG9ubHkgPT09IHRoaXMuX3JlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3JlYWRvbmx5ID0gSW5wdXRCb29sZWFuRGVjb3JhdG9yLklucHV0VmFsdWVUb0Jvb2xlYW4ocmVhZG9ubHkpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9yY2VSZWFkb25seSB8fCB0aGlzLl9yZWFkb25seTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JjZVJlYWRvbmx5KGZvcmNlUmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmIChmb3JjZVJlYWRvbmx5ID09PSB0aGlzLl9mb3JjZVJlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2ZvcmNlUmVhZG9ubHkgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihmb3JjZVJlYWRvbmx5KTtcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9yY2VSZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAocmVxdWlyZWQgPT09IHRoaXMuX3JlcXVpcmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3JlcXVpcmVkID0gSW5wdXRCb29sZWFuRGVjb3JhdG9yLklucHV0VmFsdWVUb0Jvb2xlYW4ocmVxdWlyZWQpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcmNlUmVxdWlyZWQgfHwgdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgZm9yY2VSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gYSBmb3JjZSBvdXRzaWRlIG9mIFtjZmdOYW1lXSdzIGluZmx1ZW5jZVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdKSB7XHJcbiAgICBpZiAodmFsaWRhdG9ycyA9PT0gdGhpcy5fdmFsaWRhdG9ycykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl92YWxpZGF0b3JzID0gdmFsaWRhdG9ycztcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10pIHtcclxuICAgIHRoaXMuX2FzeW5jVmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFzeW5jVmFsaWRhdG9ycygpOiBBc3luY1ZhbGlkYXRvckZuW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuJyArIEJhc2VJbnB1dENvbXBvbmVudC5IaWRkZW5DbGFzcylcclxuICBwdWJsaWMgc2V0IGhpZGRlbihoaWRkZW46IGJvb2xlYW4pIHtcclxuICAgIGlmIChoaWRkZW4gPT09IHRoaXMuX2hpZGRlbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faGlkZGVuID0gaGlkZGVuO1xyXG5cclxuICAgIHRoaXMuX2FkZE9yUmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgaWYgKGhpZGRlbikge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0YWNoKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5yZWF0dGFjaCgpO1xyXG4gICAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICB0aGlzLmRldGVjdENoYW5nZXNBZnRlckFuZ3VsYXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhpZGRlbkNoYW5nZS5lbWl0KGhpZGRlbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhpZGRlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oaWRkZW47XHJcbiAgfVxyXG5cclxuICAvLyBubyBjdXN0b20gc2V0dGVyIGxvZ2ljIGFzIHdpdGggdGhlIG90aGVyICdzY3JlZW4gY29uZmlnIHByb3BzJywgYmVjYXVzZSBjb25jcmV0ZSBmb3JtIGlucHV0IGNvbXBvbmVudHMgaGFuZGxlIHRoaXMgdGhlbXNlbHZlcy5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGVjaW1hbHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZGVjaW1hbHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGVjaW1hbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNpbWFscztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGljb246IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tQ3NzQ2xhc3M6IHN0cmluZztcclxuXHJcbiAgLy8gR29hbDogYWJpbGl0eSB0byBlbXVsYXRlIHRoZSByZWQgYmFja2dyb3VuZCBvZiBpbnB1dCBmaWVsZHMgKGZvcm0tc3VibWl0dGVkIGludmFsaWQgc3RhdGUpXHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5jYy1yZWQtZXJyb3ItYmFja2dyb3VuZCcpXHJcbiAgcHVibGljIHJlZEVycm9yQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBteUZvcm1JbnB1dEluc3RhbmNlKHZhbHVlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbXlGb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb21taXRPbkJsdXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyBAT3V0cHV0KClcclxuICAvLyBwdWJsaWMgY29tbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gZW1pdHMgd2hlbiB0aGUgZW50ZXIgYnV0dG9uIG9uIGtleWJvYXJkIHdhcyBwcmVzc2VkIHdoaWxlIHRoaXMgZm9ybSBpbnB1dCBoYWQgZm9jdXNzZWRcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkga2V5RG93bjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBrZXlVcDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSB1c2VyTW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBoaWRkZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbmNlbENsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jYy1pbnB1dC1mb2N1c2VkJylcclxuICBwdWJsaWMgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZm9ybUNvbXBvbmVudDogRm9ybUNvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWlucHV0JylcclxuICBwdWJsaWMgZm9ybUlucHV0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZygnY2xhc3MuY3VzdG9tLXdpZHRoJylcclxuICBwdWJsaWMgY3VzdG9tV2lkdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZygnY2xhc3MuY3VzdG9tLWhlaWdodCcpXHJcbiAgcHVibGljIGN1c3RvbUhlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgbm9UcmlhbmdsZUdyYXBoaWM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIGtlZXBGb2N1c3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYWxmLXdpZHRoJylcclxuICBwdWJsaWMgaGFsZldpZHRoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmZ1bGwtd2lkdGgtaW1wb3J0YW50JylcclxuICBwdWJsaWMgZnVsbFdpZHRoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBleGNsdWRlVXNlck1vZGVsQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub0Zvcm1Hcm91cENvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLXN1Ym1pdHRlZCcpXHJcbiAgcHVibGljIGdldCBmb3JtU3VibWl0dGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbXBvbmVudCAmJiB0aGlzLmZvcm1Db21wb25lbnQuc3VibWl0dGVkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXNub2xhYmVsJylcclxuICBwdWJsaWMgZ2V0IGhhc05vTGFiZWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNOaWxsKHRoaXMubGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXN2YWx1ZScpXHJcbiAgcHVibGljIGdldCBoYXNWYWx1ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoIUFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgISF0aGlzLm1vZGVsIHx8IFN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aCh0aGlzLm1vZGVsKSB8fCBOdW1iZXJVdGlscy5Jc051bWJlcih0aGlzLm1vZGVsKSkgfHxcclxuICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgdGhpcy5tb2RlbC5sZW5ndGggPiAwKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW52YWxpZCcpXHJcbiAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrU3RhdGUoKSAmJiAhdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXHJcbiAgcHVibGljIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkLW9ubHknKVxyXG4gIHB1YmxpYyBnZXQgaXNSZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXF1aXJlZCcpXHJcbiAgcHVibGljIGdldCBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWlyZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNjLXRvdWNoZWQtaW52YWxpZCcpXHJcbiAgcHVibGljIGdldCB0b3VjaGVkSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sRXhpc3RzKCkgJiYgdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgIXRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MudmFsaWQnKVxyXG4gIHB1YmxpYyBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tTdGF0ZSgpICYmIHRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubm8tdmFsaWRhdGlvbicpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMubm9WYWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbkNoYW5nZSAmJiAhdGhpcy5ub0NsaWNrRm9jdXMpIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0Rm9jdXMoKTtcclxuICAgICAgaWYgKCF0aGlzLmV4Y2x1ZGVVc2VyTW9kZWxDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLm1hcmtBc1VzZXJUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzaW4nKVxyXG4gIG9uRm9jdXNJbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5leGNsdWRlVXNlck1vZGVsQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMubWFya0FzVXNlclRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpzY3JvbGxcIilcclxuICAvLyBwdWJsaWMgaGFuZGxlRG9jdW1lbnRTY3JvbGwoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLl9wb3NpdGlvblZhbGlkYXRpb25FcnJvcigpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcclxuICAvLyBwdWJsaWMgaGFuZGxlV2luZG93UmVzaXplKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5fcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTtcclxuICAvLyB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmtleURvd24ubmV4dChldmVudCk7XHJcbiAgICBpZiAodGhpcy5zaG93U2F2ZUNhbmNlbCAmJiB0aGlzLmNhblNhdmVPckNhbmNlbCkge1xyXG4gICAgICB0aGlzLl9oYW5kbGVLZXlEb3duKGV2ZW50KTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuX3Bvc2l0aW9uVmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkNoYW5nZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UuY29udHJvbCA6IHRoaXMubmdNb2RlbCAmJiB0aGlzLm5nTW9kZWwuY29udHJvbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybUlucHV0SW5zdGFuY2UoKTogQmFzZUlucHV0Q29tcG9uZW50PFQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlIHx8IHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzRGVzdHJveWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3llZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcblxyXG4gIHB1YmxpYyBrZWVwRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY2FuY2VsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGNvbmRpdGlvblJlc29sdmVyITogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xyXG5cclxuICBwdWJsaWMgc2V0IGNhblNhdmVPckNhbmNlbCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY2FuU2F2ZU9yQ2FuY2VsID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93U2F2ZUNhbmNlbCAmJiB0aGlzLmZvY3VzZWQgJiYgdGhpcy5fY2FuU2F2ZU9yQ2FuY2VsKSB7XHJcbiAgICAgIGlmICghdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZikge1xyXG4gICAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChDb21taXRCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwYXJlbnRGb3JPdmVybGF5OiB0aGlzLmVsZW1lbnRSZWYsXHJcbiAgICAgICAgICAgIGNvbW1pdHRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb21taXRGaW5pc2hlZDogZmFsc2VcclxuICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgY29tbWl0Q2xpY2s6IChldmVudCkgPT4gdGhpcy5faGFuZGxlQ29tbWl0KGV2ZW50KSxcclxuICAgICAgICAgICAgY2FuY2VsQ2xpY2s6IChldmVudCkgPT4gdGhpcy5jYW5jZWxDbGljayhldmVudClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudCh0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmKTtcclxuICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuU2F2ZU9yQ2FuY2VsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhblNhdmVPckNhbmNlbDtcclxuICB9XHJcblxyXG4gIC8vIEBpbXBsZW1lbnRzIENvbmZpZ3VyYXRpb25BZGFwdGVyQ29tcG9uZW50XHJcbiAgcHVibGljIG9iamVjdENvbmZpZ05hbWU6IHN0cmluZztcclxuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHJvdGVjdGVkIF9tYXJrZWRBc1VzZXJUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByb3RlY3RlZCBfZGVzdHJveWVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIF9oYXNPblB1c2hDZFN0cmF0ZWd5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIF9tb2RlbDogVDtcclxuICBwcm90ZWN0ZWQgX21vZGVsRGlydHlGb3JDb21taXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX2luaXRpYWxNb2RlbDogVDtcclxuICBwcm90ZWN0ZWQgX2luaXRpYWxNb2RlbFNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9teUZvcm1JbnB1dEluc3RhbmNlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD47XHJcbiAgcHJpdmF0ZSBfZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50OiBDb21wb25lbnRSZWY8VmFsaWRhdGlvbkVycm9yQ29tcG9uZW50PjtcclxuICBwcml2YXRlIF9kZWNpbWFsczogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2hpZGRlbjogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9tYXhMZW5ndGg6IG51bWJlcjtcclxuICBwcml2YXRlIF9kZWZhdWx0VmFsdWU6IE9iamVjdENvbmZpZ3VyYXRpb25EZWZhdWx0VmFsdWVUeXBlO1xyXG4gIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuO1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIF9mb3JjZVJlYWRvbmx5OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF92YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfc3BlZWNoU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfbW9kZWxDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9mb3JtQW55U3VibWl0U3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfZm9ybVJlYWRvbmx5Q2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfY2xlYXJNYXJrZWRBc1VzZXJUb3VjaGVkU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfY2FuU2F2ZU9yQ2FuY2VsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25Db21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXI/OiBGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbmdab25lV3JhcHBlcj86IE5nWm9uZVdyYXBwZXJTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICBCYXNlSW5wdXRDb21wb25lbnQuQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4Kys7XHJcbiAgICB0aGlzLm5hbWUgPSBCYXNlSW5wdXRDb21wb25lbnQuQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLl9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWIgPSB0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIuY2xlYXJBbGxNYXJrZWRBc1VzZXJUb3VjaGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWxDaGFuZ2VTdWIgPSB0aGlzLm1vZGVsQ2hhbmdlLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHZhbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJlcGFyZUlucHV0KCk7XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG5cclxuICAgIHRoaXMuX2FkZE9yUmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5yZWFkb25seSB8fCB0aGlzLmZvcm1Db21wb25lbnQucmVhZG9ubHk7XHJcbiAgICAgIHRoaXMuX2Zvcm1SZWFkb25seUNoYW5nZVN1YiA9IHRoaXMuZm9ybUNvbXBvbmVudC5yZWFkb25seUNoYW5nZS5zdWJzY3JpYmUoKGlzRm9ybVJlYWRvbmx5OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IGlzRm9ybVJlYWRvbmx5O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbml0Rm9jdXMpIHtcclxuICAgICAgc2V0VGltZW91dCh0aGlzLnJlcXVlc3RGb2N1cy5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgKGV2ZW50KSA9PiB0aGlzLmRvQmx1cihldmVudCkpO1xyXG4gICAgICB0aGlzLmlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKGV2ZW50KSA9PiB0aGlzLmRvRm9jdXMoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbXBvbmVudCgpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnRvb2x0aXBNYW5hZ2VyICYmIHRoaXMuZWxlbWVudFJlZikge1xyXG4gICAgLy8gICAgIHRoaXMudG9vbHRpcE1hbmFnZXIuZGVzdHJveUVycm9yVG9vbHRpcE9mRWxlbWVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuX21vZGVsQ2hhbmdlU3ViKSB7XHJcbiAgICAgIHRoaXMuX21vZGVsQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fc3BlZWNoU3ViKSB7XHJcbiAgICAgIHRoaXMuX3NwZWVjaFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2Zvcm1BbnlTdWJtaXRTdWIpIHtcclxuICAgICAgdGhpcy5fZm9ybUFueVN1Ym1pdFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2Zvcm1SZWFkb25seUNoYW5nZVN1Yikge1xyXG4gICAgICB0aGlzLl9mb3JtUmVhZG9ubHlDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWIpIHtcclxuICAgICAgdGhpcy5fY2xlYXJNYXJrZWRBc1VzZXJUb3VjaGVkU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLl9yZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuICAgIHRoaXMuZWxlbWVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmlucHV0ID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLy8gZGVzY2VuZGVudHMgc2hvdWxkIG92ZXJyaWRlIHRoaXNcclxuICBwdWJsaWMgY29tbWl0ID0gYXN5bmMgKG1vZGVsOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNhbmNlbENsaWNrKGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNvbmRpdGlvblJlc29sdmVyKHRoaXMuY2FuY2VsZWQpO1xyXG5cclxuICAgIHRoaXMua2VlcEZvY3VzID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl9pbml0aWFsTW9kZWxTZXQpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuX2luaXRpYWxNb2RlbDtcclxuICAgIH1cclxuICAgIHRoaXMua2VlcEZvY3VzID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhbmNlbENsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dWYWxpZGF0aW9uRXJyb3IoZXJyb3I6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3IgPSBlcnJvcjtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb25Db21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChWYWxpZGF0aW9uRXJyb3JDb21wb25lbnQsIHtwYXJlbnRGb3JPdmVybGF5OiB0aGlzLmVsZW1lbnRSZWYsIGVycm9yOiBlcnJvcn0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYSBtb2RlbENoYW5nZSBldmVudCB3aXRoIGdpdmVuIHZhbHVlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG1vZGVsIG9mIHRoaXMgZm9ybSBpbnB1dFxyXG4gICAqIGhhcyBjaGFuZ2VkIGFuZCBpdHMgbmV3IHZhbHVlIGlzIGdpdmVuIHZhbHVlLiBBbHNvIGVtaXRzIHVzZXJNb2RlbENoYW5nZSBpZiBtYXJrZWRBc1VzZXJUb3VjaGVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsID0gdmFsdWU7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sLm1hcmtBc0RpcnR5KHtvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQuZm9ybUdyb3VwLm1hcmtBc0RpcnR5KHtvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkICYmIHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgICB0aGlzLnVzZXJNb2RlbENoYW5nZS5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXF1ZXN0Rm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5DaGFuZ2UgJiYgdGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvRm9jdXMoZXZlbnQ/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faW5pdGlhbE1vZGVsU2V0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5jYW5TYXZlT3JDYW5jZWwgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvY3VzLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2FpdEZvckNhbmNlbENvbmRpdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJlc29sdmVyID0gcmVzb2x2ZTsgLy8gU2F2ZSB0aGUgcmVzb2x2ZXIgdG8gYmUgY2FsbGVkIGxhdGVyXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkb0JsdXIoZXZlbnQ/OiBhbnksIGhhbmRsZUNvbW1pdDogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgY2FuY2VsVGltZW91dCA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAzMDApKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbdGhpcy53YWl0Rm9yQ2FuY2VsQ29uZGl0aW9uKCksIGNhbmNlbFRpbWVvdXRdKTtcclxuICAgIC8vIElmIGNhbmNlbGVkXHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93U2F2ZUNhbmNlbCAmJiBoYW5kbGVDb21taXQgJiYgdGhpcy5fbW9kZWxEaXJ0eUZvckNvbW1pdCkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9oYW5kbGVDb21taXQoZXZlbnQsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5rZWVwRm9jdXMgfHwgdGhpcy5rZWVwRm9jdXNzZWQpIHtcclxuICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXQuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYmx1ci5uZXh0KCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRldGVjdENoYW5nZXNBZnRlckFuZ3VsYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLm5nWm9uZVdyYXBwZXIpIHtcclxuICAgICAgdGhpcy5uZ1pvbmVXcmFwcGVyLnNldFRpbWVvdXRPdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlua3MgdGhlIGdpdmVuIGZvcm1Db21wLnN1Ym1pdCBldmVudCB0byB0aGUgZmlyaW5nIG9mIGRldGVjdENoYW5nZXMoKSBvZiBnaXZlbiBjaGFuZ2UgZGV0ZWN0b3IuIFRoaXMgaXMgYSAndXRpbGl0eS1saWtlJyBtZXRob2QsXHJcbiAgICogYnV0IHdlIG1hbmFnZSB0aGUgYWN0dWFsIHN1YnNjcmlwdGlvbiAod2l0aCBVTlNVQlNDUklCRSgpISkgb24gdGhpcyBiYXNlIGNsYXNzLlxyXG4gICAqIEBwYXJhbSBmb3JtQ29tcCBUaGUgZm9ybSB3aG9zZSBzdWJtaXQgd2Ugd2FudCB0byBsaW5rIHdpdGggdGhlIGNhbGwgb2YgLmRldGVjdENoYW5nZXMoKSBvbiBnaXZlbiBjaGFuZ2UgZGV0ZWN0b3IgcmVmLlxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBUaGlzIHNob3VsZCBiZSBnaXZlbiBhcyBwYXJhbS4gSSBjaG9vc2Ugbm90IHRvIG1ha2UgdGhpcyBwYXJ0IG9mIG91ciAoQmFzZUZvcm1JbnB1dENvbXBvbmVudCkgY29uc3RydWN0b3IsXHJcbiAgICogYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUgMjEgZXh0ZW5kZXJzLlxyXG4gICAqL1xyXG4gIC8vIHB1YmxpYyBsaW5rRm9ybUFueVN1Ym1pdFdpdGhEZXRlY3RDaGFuZ2VzKGZvcm1Db21wOiBGb3JtQ29tcG9uZW50LCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAvLyAgICAgaWYgKGZvcm1Db21wICYmIGNoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLl9mb3JtQW55U3VibWl0U3ViID0gZm9ybUNvbXAuYW55U3VibWl0LnN1YnNjcmliZSgoKCkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBtYXJrQXNVc2VyVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5yZWRFcnJvckJhY2tncm91bmQgPSBmYWxzZTsgLy8gbm90IHN1cmUgaWYgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gdGhhdFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyTWFya2VkQXNVc2VyVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBtb2RlbFNldCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICAvL3VzZWQgZm9yIGRlc2NlbmRlbnRzLCBiZWNhdXNlIGRlc2NlbmRlbnRzIGNhbid0IHNldCBzdXBlciBwcm9wZXJ0aWVzLCBzZWUgSW5wdXROdW1iZXJDb21wb25lbnRcclxuICBwcm90ZWN0ZWQgc2V0TWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAobm90TmlsbCh0aGlzLmZvcmNlZE1heExlbmd0aCkgfHwgbWF4TGVuZ3RoID09PSB0aGlzLl9tYXhMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNOYU4obWF4TGVuZ3RoKSkge1xyXG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSBtYXhMZW5ndGg7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfbWFya0FzT25QdXNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2NoZWNrU3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5uZ01vZGVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1TdWJtaXR0ZWQgfHwgKHRoaXMuX2NvbnRyb2xFeGlzdHMoKSAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQbGFjZSB2YWxpZGF0b3JzIG9udG8gb3VyIEFuZ3VsYXIncyBGb3JtQ29udHJvbC5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcjogRWxlbWVudFJlZiA9IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZS5lbGVtZW50UmVmIDogdGhpcy5lbGVtZW50UmVmO1xyXG4gICAgLy8gaWYgKHRoaXMudG9vbHRpcE1hbmFnZXIgJiYgZXIpIHtcclxuICAgIC8vICAgICB0aGlzLnRvb2x0aXBNYW5hZ2VyLmRlc3Ryb3lFcnJvclRvb2x0aXBPZkVsZW1lbnQoZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLl9zZXROYXRpdmVSZXF1aXJlZCh0aGlzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZU1heExlbmd0aCh0aGlzLm1heExlbmd0aCk7XHJcbiAgICB0aGlzLl9zZXROYXRpdmVEaXNhYmxlZCh0aGlzLmRpc2FibGVkKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZVJlYWRPbmx5KHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JjZVJlYWRvbmx5KTtcclxuXHJcbiAgICB0aGlzLnJlZEVycm9yQmFja2dyb3VuZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xFeGlzdHMoKSkge1xyXG4gICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgICAvLyBhZGQgcmVxdWlyZWRcclxuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2gocmVxdWlyZWRWYWxpZGF0b3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBhZGQgbWF4bGVuZ3RoXHJcbiAgICAgIGlmIChub3ROaWxsKHRoaXMuX21heExlbmd0aCkpIHtcclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFscykge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHByZWNpc2lvblNjYWxlVmFsaWRhdG9yKHRoaXMuX21heExlbmd0aCwgdGhpcy5kZWNpbWFscykpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gobWF4U3RyaW5nTGVuZ3RoVmFsaWRhdG9yKHRoaXMuX21heExlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIEBJbnB1dCgpLWVkIHZhbGlkYXRvcnNcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMuX3ZhbGlkYXRvcnMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnMpIHtcclxuICAgICAgICB0aGlzLl92YWxpZGF0b3JzLmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IgPT09IHJlcXVpcmVkVmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0TmF0aXZlUmVxdWlyZWQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVDb21taXQoZXZlbnQ/OiBNb3VzZUV2ZW50LCBkb0JsdXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd1NhdmVDYW5jZWwgfHwgKCF0aGlzLl9tb2RlbERpcnR5Rm9yQ29tbWl0KSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMua2VlcEZvY3VzID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYuaW5zdGFuY2UuY29tbWl0RmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXR0aW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX21vZGVsRGlydHlGb3JDb21taXQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbW1pdCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMua2VlcEZvY3VzID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLl9jb21taXRGaW5pc2hlZCgpO1xyXG4gICAgaWYgKHN1Y2Nlc3MgJiYgZG9CbHVyKSB7XHJcbiAgICAgIHRoaXMuZG9CbHVyKGV2ZW50LCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VzcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbW1pdEZpbmlzaGVkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZikge1xyXG4gICAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYuaW5zdGFuY2UuY29tbWl0RmluaXNoZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYuaW5zdGFuY2UuY29tbWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXRGaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5yZW1vdmVDb21wb25lbnQodGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZik7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSwgODAwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYXJFcnJvckNvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3ZlcmxheVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuX3ZhbGlkYXRpb25Db21wb25lbnRSZWYpO1xyXG4gIH1cclxuXHJcbiAgLy8gd2hldGhlciB0aGlzLm5nTW9kZWwuY29udHJvbCBoYXMgc2FmZSBhY2Nlc3NcclxuICBwcml2YXRlIF9jb250cm9sRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubmdNb2RlbCAmJiAhIXRoaXMuY29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2xJc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xFeGlzdHMoKSAmJiB0aGlzLmNvbnRyb2wudmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXROYXRpdmVEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TmF0aXZlTWF4TGVuZ3RoKG1heGxlbmd0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCAmJiAhaXNOYU4obWF4bGVuZ3RoKSkge1xyXG4gICAgICB0aGlzLmlucHV0Lm1heExlbmd0aCA9IG1heGxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfc2V0TmF0aXZlUmVhZE9ubHkocmVhZG9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQucmVhZE9ubHkgPSByZWFkb25seTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5hdGl2ZVJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LnJlcXVpcmVkID0gcmVxdWlyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NwZWVjaElucHV0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5fc3BlZWNoU3ViID0gdGhpcy5zcGVlY2hJbnB1dC5zcGVlY2hJbnB1dC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgIC8vICAgICBpZiAodGhpcy5mb2N1c2VkICYmIHRoaXMuX2NvbnRyb2xFeGlzdHMoKSkge1xyXG4gICAgLy8gICAgICAgICBjb25zdCB2YWw6IHN0cmluZyA9IHRoaXMuY29udHJvbC52YWx1ZTtcclxuICAgIC8vICAgICAgICAgdGhpcy5zZXRNb2RlbCgoU3RyaW5nVXRpbHMuSXNTdHJpbmcodmFsKSA/IHZhbCA6ICcnKSArIGRhdGEpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRkT3JSZW1vdmVTZWxmRnJvbUZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW4pIHtcclxuICAgICAgdGhpcy5fcmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9hZGRTZWxmVG9Gb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVTZWxmSW5Gb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQudXBkYXRlRm9ybUlucHV0KHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlU2VsZkZyb21Gb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCAmJiB0aGlzLm5nTW9kZWwpIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcG9uZW50LnJlbW92ZUZvcm1JbnB1dCh0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZFNlbGZUb0Zvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50ICYmIHRoaXMubmdNb2RlbCAmJiAhdGhpcy5ub0Zvcm1Hcm91cENvbnRyb2wpIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcG9uZW50LnJlbW92ZUZvcm1JbnB1dCh0aGlzKTsgLy8gcHJldmVudGluZyB0aGVyZSBhcmUgdHdvIGNvbnRyb2xzIGluIGZvcm1ncm91cCB3aGVuIG15Rm9ybUlucHV0SW5zdGFuY2UgaXMgKGJlaW5nKSBzZXRcclxuICAgICAgdGhpcy5mb3JtQ29tcG9uZW50LmFkZEZvcm1JbnB1dCh0aGlzLm15Rm9ybUlucHV0SW5zdGFuY2UgPyB0aGlzLm15Rm9ybUlucHV0SW5zdGFuY2UgOiB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVJbnB1dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgLy90cnkgdG8gZmluZCBpbnB1dCBlbGVtZW50XHJcbiAgICAgIHRoaXMuX2ZpbmRJbnB1dE5vZGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pO1xyXG4gICAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChldmVudCkgPT4gdGhpcy5kb0JsdXIoZXZlbnQpKTtcclxuICAgICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKGV2ZW50KSA9PiB0aGlzLmRvRm9jdXMoZXZlbnQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmluZElucHV0Tm9kZShub2Rlcyk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXQgPSBub2RlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2ZpbmRJbnB1dE5vZGUobm9kZS5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Bvc2l0aW9uVmFsaWRhdGlvbkVycm9yKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQpIHtcclxuICAgICAgY29uc3QgY2xpZW50UmVjdDogQ2xpZW50UmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQuaW5zdGFuY2UudG9wID0gY2xpZW50UmVjdC5ib3R0b207XHJcbiAgICAgIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudC5pbnN0YW5jZS5sZWZ0ID0gY2xpZW50UmVjdC5sZWZ0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIF9oYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgIGNhc2UgJ051bXBhZEVudGVyJzpcclxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlQ29tbWl0KCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBjYXNlICdUYWInOlxyXG4gICAgICAgIGNvbnN0IG5leHRTaWJsaW5nVG9Gb2N1cyA9IGV2ZW50LnNoaWZ0S2V5ID8gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgYW55KS5wcmV2aW91c1NpYmxpbmcgOiAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBhbnkpLm5leHRTaWJsaW5nO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuX2hhbmRsZUNvbW1pdCgpO1xyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICBpZiAobmV4dFNpYmxpbmdUb0ZvY3VzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fc2V0Rm9jdXNPbk5leHRQb3NzaWJsZUlucHV0KG5leHRTaWJsaW5nVG9Gb2N1cywgZXZlbnQuc2hpZnRLZXkpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICAgIHRoaXMuY2FuY2VsQ2xpY2soKTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU5ld0ZvY3VzRXZlbnQoZWxlbWVudDogYW55KTogRXZlbnQge1xyXG4gICAgbGV0IGV2ZW50VHlwZSA9ICdvbmZvY3VzaW4nIGluIGVsZW1lbnQgPyAnZm9jdXNpbicgOiAnZm9jdXMnLFxyXG4gICAgICBidWJibGVzID0gJ29uZm9jdXNpbicgaW4gZWxlbWVudCxcclxuICAgICAgZm9jdXNFdmVudDtcclxuXHJcbiAgICBpZiAoJ2NyZWF0ZUV2ZW50JyBpbiBkb2N1bWVudCkge1xyXG4gICAgICBmb2N1c0V2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XHJcbiAgICAgIGZvY3VzRXZlbnQuaW5pdEV2ZW50KGV2ZW50VHlwZSwgYnViYmxlcywgdHJ1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKCdFdmVudCcgaW4gd2luZG93KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnRUeXBlLCB7YnViYmxlczogYnViYmxlcywgY2FuY2VsYWJsZTogdHJ1ZX0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvY3VzRXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRGb2N1c09uTmV4dFBvc3NpYmxlSW5wdXQoZWxlbWVudDogYW55LCBwcmV2aW91czogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGVsZW1lbnRDb2xsID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTtcclxuICAgIGlmICghZWxlbWVudENvbGwgfHwgZWxlbWVudENvbGwubGVuZ3RoIDwgMSkge1xyXG4gICAgICBlbGVtZW50Q29sbCA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RleHRhcmVhJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoZWxlbWVudENvbGwgJiYgZWxlbWVudENvbGwubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBlbGVtZW50Q29sbFswXTtcclxuICAgICAgaWYgKGlucHV0RWxlbWVudC5kaXNhYmxlZCB8fCBpbnB1dEVsZW1lbnQucmVhZE9ubHkpIHtcclxuICAgICAgICB0aGlzLl9zZXRGb2N1c09uTmV4dFBvc3NpYmxlSW5wdXQocHJldmlvdXMgPyBlbGVtZW50LnByZXZpb3VzU2libGluZyA6IGVsZW1lbnQubmV4dFNpYmxpbmcsIHByZXZpb3VzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmb2N1c0V2ZW50ID0gdGhpcy5fY3JlYXRlTmV3Rm9jdXNFdmVudChlbGVtZW50KTtcclxuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICBpbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChmb2N1c0V2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -55,27 +55,27 @@ export class CoDialogComponent {
55
55
  CoDialogComponent.decorators = [
56
56
  { type: Component, args: [{
57
57
  selector: 'co-dialog',
58
- template: `
59
- <div class="co-dialog-overlay" (click)="handleOverlayClick($event)"></div>
60
- <div class="co-dialog-placeholder">
61
- <div class="co-dialog-wrapper" [ngClass]="customCssClass ? customCssClass : undefined" @showHideDialog cdkDrag>
62
- <div *ngIf="!borderless" class="dialog-drag-handle" cdkDragHandle></div>
63
- <div class="dialog-header" *ngIf="!borderless">
64
- <div class="dialog-header-caption" *ngIf="headerTemplate">
65
- <ng-container [ngTemplateOutlet]="headerTemplate"></ng-container>
66
- </div>
67
- <div class="dialog-close-button" *ngIf="showCloseIcon" (click)="handleCloseDialog($event)">
68
- <co-icon [icon]="icons.CrossSkinny"></co-icon>
69
- </div>
70
- </div>
71
- <div class="dialog-content co-small-scrollbar" [ngClass]="customCssClass ? customCssClass : undefined">
72
- <ng-content></ng-content>
73
- </div>
74
- <div class="dialog-footer" *ngIf="footerTemplate">
75
- <ng-container [ngTemplateOutlet]="footerTemplate"></ng-container>
76
- </div>
77
- </div>
78
- </div>
58
+ template: `
59
+ <div class="co-dialog-overlay" (click)="handleOverlayClick($event)"></div>
60
+ <div class="co-dialog-placeholder">
61
+ <div class="co-dialog-wrapper" [ngClass]="customCssClass ? customCssClass : undefined" @showHideDialog cdkDrag>
62
+ <div *ngIf="!borderless" class="dialog-drag-handle" cdkDragHandle></div>
63
+ <div class="dialog-header" *ngIf="!borderless">
64
+ <div class="dialog-header-caption" *ngIf="headerTemplate">
65
+ <ng-container [ngTemplateOutlet]="headerTemplate"></ng-container>
66
+ </div>
67
+ <div class="dialog-close-button" *ngIf="showCloseIcon" (click)="handleCloseDialog($event)">
68
+ <co-icon [icon]="icons.CrossSkinny"></co-icon>
69
+ </div>
70
+ </div>
71
+ <div class="dialog-content co-small-scrollbar" [ngClass]="customCssClass ? customCssClass : undefined">
72
+ <ng-content></ng-content>
73
+ </div>
74
+ <div class="dialog-footer" *ngIf="footerTemplate">
75
+ <ng-container [ngTemplateOutlet]="footerTemplate"></ng-container>
76
+ </div>
77
+ </div>
78
+ </div>
79
79
  `,
80
80
  animations: [
81
81
  trigger('showHideCoDialog', [
@@ -110,4 +110,4 @@ CoDialogComponent.propDecorators = {
110
110
  mobile: [{ type: HostBinding, args: ['class.is-mobile',] }],
111
111
  ngOnInit: [{ type: HostBinding, args: ['@showHideCoDialog',] }]
112
112
  };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNyQixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUMvQixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQ2xDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFN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QUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7c0JBUXpDLFdBQVcsU0FBQyxnQkFBZ0I7cUJBRzVCLFdBQVcsU0FBQyxpQkFBaUI7dUJBSzdCLFdBQVcsU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW0nO1xuaW1wb3J0IHthbmltYXRlLCBhbmltYXRlQ2hpbGQsIEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBzaG93SGlkZURpYWxvZyA9IFtcbiAgICB3aW5kb3cuaW5uZXJXaWR0aCA+IDcwMCA/XG4gICAgICAgIHRyaWdnZXIoJ3Nob3dIaWRlRGlhbG9nJywgW1xuICAgICAgICAgICAgc3RhdGUoJyonLCBzdHlsZSh7b3BhY2l0eTogMX0pKSxcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe29wYWNpdHk6IDB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkIDw9PiAqJywgYW5pbWF0ZSgyMDApKVxuICAgICAgICBdKSA6XG4gICAgICAgIHRyaWdnZXIoJ3Nob3dIaWRlRGlhbG9nJywgW1xuICAgICAgICAgICAgc3RhdGUoJyonLCBzdHlsZSh7Ym90dG9tOiAwfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7Ym90dG9tOiAnLTEwMCUnfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoMjAwKSlcbiAgICAgICAgXSlcbl1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjby1kaWFsb2cnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctb3ZlcmxheVwiIChjbGljayk9XCJoYW5kbGVPdmVybGF5Q2xpY2soJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLXdyYXBwZXJcIiBbbmdDbGFzc109XCJjdXN0b21Dc3NDbGFzcyA/IGN1c3RvbUNzc0NsYXNzIDogdW5kZWZpbmVkXCIgQHNob3dIaWRlRGlhbG9nIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFib3JkZXJsZXNzXCIgY2xhc3M9XCJkaWFsb2ctZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCIgKm5nSWY9XCIhYm9yZGVybGVzc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlci1jYXB0aW9uXCIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jbG9zZS1idXR0b25cIiAqbmdJZj1cInNob3dDbG9zZUljb25cIiAoY2xpY2spPVwiaGFuZGxlQ2xvc2VEaWFsb2coJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25dPVwiaWNvbnMuQ3Jvc3NTa2lubnlcIj48L2NvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiBbbmdDbGFzc109XCJjdXN0b21Dc3NDbGFzcyA/IGN1c3RvbUNzc0NsYXNzIDogdW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdzaG93SGlkZUNvRGlhbG9nJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICAgICAgICAgIHF1ZXJ5KCcuY28tZGlhbG9nLW92ZXJsYXknLCBzdHlsZSh7b3BhY2l0eTogMH0pKSxcbiAgICAgICAgICAgICAgICAvLyBxdWVyeSgnLmNvLWRpYWxvZy13cmFwcGVyJywgc3R5bGUoe2JvdHRvbTogJy0xMDAlJ30pKSxcbiAgICAgICAgICAgICAgICBxdWVyeSgnLmNvLWRpYWxvZy1vdmVybGF5JywgYW5pbWF0ZSgyMDAsIHN0eWxlKHtvcGFjaXR5OiAxfSkpKSxcbiAgICAgICAgICAgICAgICBxdWVyeSgnQHNob3dIaWRlRGlhbG9nJywgYW5pbWF0ZUNoaWxkKCkpXG5cbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xuICAgICAgICAgICAgICAgIC8vIHF1ZXJ5KCcuY28tZGlhbG9nLXdyYXBwZXInLCBzdHlsZSh7Ym90dG9tOiAwfSkpLFxuICAgICAgICAgICAgICAgIHF1ZXJ5KCdAc2hvd0hpZGVEaWFsb2cnLCBhbmltYXRlQ2hpbGQoKSksXG4gICAgICAgICAgICAgICAgcXVlcnkoJy5jby1kaWFsb2ctb3ZlcmxheScsIGFuaW1hdGUoMjAwLCBzdHlsZSh7b3BhY2l0eTogMH0pKSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICAgICAgc2hvd0hpZGVEaWFsb2dcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ29EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUNzc0NsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0Nsb3NlSWNvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ib3JkZXJsZXNzJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VDbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kaWFsb2cnKVxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDbG9zZURpYWxvZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy10b3VjaCcpXG4gICAgcHVibGljIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtbW9iaWxlJylcbiAgICBwdWJsaWMgbW9iaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc3RhdGU6IHN0cmluZyA9ICdjbG9zZWQnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdAc2hvd0hpZGVDb0RpYWxvZycpXG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hlY2tEZXZpY2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VEaWFsb2coZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VDbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3ZlcmxheUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tEZXZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNUb3VjaCA9ICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cpIHx8XG4gICAgICAgICAgICAobmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMCkgfHxcbiAgICAgICAgICAgIChuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyA+IDApO1xuICAgICAgICB0aGlzLm1vYmlsZSA9IHdpbmRvdy5pbm5lcldpZHRoIDwgNzAwO1xuICAgIH1cbn1cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNyQixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUMvQixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQ2xDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QyxDQUFDO0NBQ1QsQ0FBQTtBQTZDRCxNQUFNLE9BQU8saUJBQWlCO0lBM0M5QjtRQTRDb0IsVUFBSyxHQUE4QixrQkFBa0IsQ0FBQztRQVkvRCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUc5QixVQUFLLEdBQVksS0FBSyxDQUFDO1FBSXZCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHbkIsZUFBVSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBZ0IvRSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3pCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsVUFBSyxHQUFXLFFBQVEsQ0FBQztJQXdCcEMsQ0FBQztJQTFDVSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdNLGFBQWEsQ0FBQyxLQUFvQjtRQUNyQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDaEIsS0FBSyxRQUFRO2dCQUNULElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQVlELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWtCO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFpQjtRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUM7WUFDckMsQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzFDLENBQUM7OztZQTlHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUJUO2dCQUNELFVBQVUsRUFBRTtvQkFDUixPQUFPLENBQUMsa0JBQWtCLEVBQUU7d0JBQ3hCLFVBQVUsQ0FBQyxXQUFXLEVBQUU7NEJBQ3BCLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs0QkFDaEQseURBQXlEOzRCQUN6RCxLQUFLLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUM5RCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUM7eUJBRTNDLENBQUM7d0JBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTs0QkFDcEIsbURBQW1EOzRCQUNuRCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUM7NEJBQ3hDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ2pFLENBQUM7cUJBQ0wsQ0FBQztvQkFDRixjQUFjO2lCQUNqQjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7OzZCQUlJLEtBQUs7NkJBR0wsS0FBSzs2QkFHTCxLQUFLOzRCQUdMLEtBQUs7b0JBR0wsS0FBSzt5QkFHTCxXQUFXLFNBQUMsa0JBQWtCLGNBQzlCLEtBQUs7eUJBR0wsTUFBTTt3QkFHTixXQUFXLFNBQUMsaUJBQWlCOzRCQUs3QixZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7c0JBUXpDLFdBQVcsU0FBQyxnQkFBZ0I7cUJBRzVCLFdBQVcsU0FBQyxpQkFBaUI7dUJBSzdCLFdBQVcsU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XHJcbmltcG9ydCB7YW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGEsIHF1ZXJ5LCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNob3dIaWRlRGlhbG9nID0gW1xyXG4gICAgd2luZG93LmlubmVyV2lkdGggPiA3MDAgP1xyXG4gICAgICAgIHRyaWdnZXIoJ3Nob3dIaWRlRGlhbG9nJywgW1xyXG4gICAgICAgICAgICBzdGF0ZSgnKicsIHN0eWxlKHtvcGFjaXR5OiAxfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHtvcGFjaXR5OiAwfSkpLFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkIDw9PiAqJywgYW5pbWF0ZSgyMDApKVxyXG4gICAgICAgIF0pIDpcclxuICAgICAgICB0cmlnZ2VyKCdzaG93SGlkZURpYWxvZycsIFtcclxuICAgICAgICAgICAgc3RhdGUoJyonLCBzdHlsZSh7Ym90dG9tOiAwfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHtib3R0b206ICctMTAwJSd9KSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPD0+IConLCBhbmltYXRlKDIwMCkpXHJcbiAgICAgICAgXSlcclxuXVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvLWRpYWxvZycsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctb3ZlcmxheVwiIChjbGljayk9XCJoYW5kbGVPdmVybGF5Q2xpY2soJGV2ZW50KVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy13cmFwcGVyXCIgW25nQ2xhc3NdPVwiY3VzdG9tQ3NzQ2xhc3MgPyBjdXN0b21Dc3NDbGFzcyA6IHVuZGVmaW5lZFwiIEBzaG93SGlkZURpYWxvZyBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFib3JkZXJsZXNzXCIgY2xhc3M9XCJkaWFsb2ctZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIiAqbmdJZj1cIiFib3JkZXJsZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXItY2FwdGlvblwiICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY2xvc2UtYnV0dG9uXCIgKm5nSWY9XCJzaG93Q2xvc2VJY29uXCIgKGNsaWNrKT1cImhhbmRsZUNsb3NlRGlhbG9nKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25dPVwiaWNvbnMuQ3Jvc3NTa2lubnlcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiBbbmdDbGFzc109XCJjdXN0b21Dc3NDbGFzcyA/IGN1c3RvbUNzc0NsYXNzIDogdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgYW5pbWF0aW9uczogW1xyXG4gICAgICAgIHRyaWdnZXIoJ3Nob3dIaWRlQ29EaWFsb2cnLCBbXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5KCcuY28tZGlhbG9nLW92ZXJsYXknLCBzdHlsZSh7b3BhY2l0eTogMH0pKSxcclxuICAgICAgICAgICAgICAgIC8vIHF1ZXJ5KCcuY28tZGlhbG9nLXdyYXBwZXInLCBzdHlsZSh7Ym90dG9tOiAnLTEwMCUnfSkpLFxyXG4gICAgICAgICAgICAgICAgcXVlcnkoJy5jby1kaWFsb2ctb3ZlcmxheScsIGFuaW1hdGUoMjAwLCBzdHlsZSh7b3BhY2l0eTogMX0pKSksXHJcbiAgICAgICAgICAgICAgICBxdWVyeSgnQHNob3dIaWRlRGlhbG9nJywgYW5pbWF0ZUNoaWxkKCkpXHJcblxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xyXG4gICAgICAgICAgICAgICAgLy8gcXVlcnkoJy5jby1kaWFsb2ctd3JhcHBlcicsIHN0eWxlKHtib3R0b206IDB9KSksXHJcbiAgICAgICAgICAgICAgICBxdWVyeSgnQHNob3dIaWRlRGlhbG9nJywgYW5pbWF0ZUNoaWxkKCkpLFxyXG4gICAgICAgICAgICAgICAgcXVlcnkoJy5jby1kaWFsb2ctb3ZlcmxheScsIGFuaW1hdGUoMjAwLCBzdHlsZSh7b3BhY2l0eTogMH0pKSlcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgXSksXHJcbiAgICAgICAgc2hvd0hpZGVEaWFsb2dcclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBDb3JlQ29tcG9uZW50c0ljb24gPSBDb3JlQ29tcG9uZW50c0ljb247XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21Dc3NDbGFzczogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dDbG9zZUljb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJvcmRlcmxlc3MnKVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VDbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tZGlhbG9nJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2VEaWFsb2coKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy10b3VjaCcpXHJcbiAgICBwdWJsaWMgaXNUb3VjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtbW9iaWxlJylcclxuICAgIHB1YmxpYyBtb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGU6IHN0cmluZyA9ICdjbG9zZWQnO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnQHNob3dIaWRlQ29EaWFsb2cnKVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoZWNrRGV2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUNsb3NlRGlhbG9nKGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xvc2VDbGljay5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlT3ZlcmxheUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VDbGljay5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2hlY2tEZXZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1RvdWNoID0gKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykgfHxcclxuICAgICAgICAgICAgKG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApIHx8XHJcbiAgICAgICAgICAgIChuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyA+IDApO1xyXG4gICAgICAgIHRoaXMubW9iaWxlID0gd2luZG93LmlubmVyV2lkdGggPCA3MDA7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -15,21 +15,21 @@ export class CoDialogWizardComponent {
15
15
  CoDialogWizardComponent.decorators = [
16
16
  { type: Component, args: [{
17
17
  selector: 'co-dialog-wizard',
18
- template: `
19
- <div class="co-dialog-wizard-wrapper" [@showHideDialog]="animation">
20
- <div class="dialog-header">
21
- <ng-content select="[header]"></ng-content>
22
- <div class="dialog-close-button" *ngIf="showCloseIcon" (click)="closeClick.emit($event)">
23
- <co-icon [icon]="icons.CrossSkinny"></co-icon>
24
- </div>
25
- </div>
26
-
27
- <hr class="co-dialog-wizard-divider">
28
-
29
- <div class="dialog-content">
30
- <ng-content></ng-content>
31
- </div>
32
- </div>
18
+ template: `
19
+ <div class="co-dialog-wizard-wrapper" [@showHideDialog]="animation">
20
+ <div class="dialog-header">
21
+ <ng-content select="[header]"></ng-content>
22
+ <div class="dialog-close-button" *ngIf="showCloseIcon" (click)="closeClick.emit($event)">
23
+ <co-icon [icon]="icons.CrossSkinny"></co-icon>
24
+ </div>
25
+ </div>
26
+
27
+ <hr class="co-dialog-wizard-divider">
28
+
29
+ <div class="dialog-content">
30
+ <ng-content></ng-content>
31
+ </div>
32
+ </div>
33
33
  `,
34
34
  animations: [
35
35
  trigger('showHideDialog', [
@@ -48,4 +48,4 @@ CoDialogWizardComponent.propDecorators = {
48
48
  closeClick: [{ type: Output }],
49
49
  showClass: [{ type: HostBinding, args: ["class.co-dialog-wizard",] }]
50
50
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLXdpemFyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY28tZGlhbG9nLXdpemFyZC9jby1kaWFsb2ctd2l6YXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBOEIvRSxNQUFNLE9BQU8sdUJBQXVCO0lBNUJwQztRQTZCa0IsVUFBSyxHQUE4QixrQkFBa0IsQ0FBQztRQUcvRCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUc5QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBR2pCLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQU94RixDQUFDO0lBSlEsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBM0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3hCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQy9CLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQ2xDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUMvQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdEMsQ0FBQztpQkFDSDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7OzRCQUlFLEtBQUs7d0JBR0wsS0FBSzt5QkFHTCxNQUFNO3dCQUdOLFdBQVcsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtXCI7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY28tZGlhbG9nLXdpemFyZCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy13aXphcmQtd3JhcHBlclwiIFtAc2hvd0hpZGVEaWFsb2ddPVwiYW5pbWF0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jbG9zZS1idXR0b25cIiAqbmdJZj1cInNob3dDbG9zZUljb25cIiAoY2xpY2spPVwiY2xvc2VDbGljay5lbWl0KCRldmVudClcIj5cbiAgICAgICAgICA8Y28taWNvbiBbaWNvbl09XCJpY29ucy5Dcm9zc1NraW5ueVwiPjwvY28taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGhyIGNsYXNzPVwiY28tZGlhbG9nLXdpemFyZC1kaXZpZGVyXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3Nob3dIaWRlRGlhbG9nJywgW1xuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7b3BhY2l0eTogMX0pKSxcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe29wYWNpdHk6IDB9KSksXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKCcyMDBtcyAyMDBtcycpKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoMjAwKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENvRGlhbG9nV2l6YXJkQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93Q2xvc2VJY29uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYW5pbWF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1kaWFsb2ctd2l6YXJkXCIpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxufVxuIl19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLXdpemFyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY28tZGlhbG9nLXdpemFyZC9jby1kaWFsb2ctd2l6YXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBOEIvRSxNQUFNLE9BQU8sdUJBQXVCO0lBNUJwQztRQTZCa0IsVUFBSyxHQUE4QixrQkFBa0IsQ0FBQztRQUcvRCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUc5QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBR2pCLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQU94RixDQUFDO0lBSlEsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBM0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3hCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQy9CLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQ2xDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUMvQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdEMsQ0FBQztpQkFDSDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7OzRCQUlFLEtBQUs7d0JBR0wsS0FBSzt5QkFHTCxNQUFNO3dCQUdOLFdBQVcsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW1cIjtcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWRpYWxvZy13aXphcmQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLXdpemFyZC13cmFwcGVyXCIgW0BzaG93SGlkZURpYWxvZ109XCJhbmltYXRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNsb3NlLWJ1dHRvblwiICpuZ0lmPVwic2hvd0Nsb3NlSWNvblwiIChjbGljayk9XCJjbG9zZUNsaWNrLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGNvLWljb24gW2ljb25dPVwiaWNvbnMuQ3Jvc3NTa2lubnlcIj48L2NvLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGhyIGNsYXNzPVwiY28tZGlhbG9nLXdpemFyZC1kaXZpZGVyXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnRcIj5cclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzaG93SGlkZURpYWxvZycsIFtcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7b3BhY2l0eTogMX0pKSxcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7b3BhY2l0eTogMH0pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgnMjAwbXMgMjAwbXMnKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoMjAwKSlcclxuICAgIF0pXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb0RpYWxvZ1dpemFyZENvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93Q2xvc2VJY29uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYW5pbWF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGlhbG9nLXdpemFyZFwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==