UNPKG

ngh-spinner

Version:

Library for Loading Spinner - Angular 4/5/6

188 lines (178 loc) 22.6 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@angular/common/http'), require('@angular/common')) : typeof define === 'function' && define.amd ? define('ngh-spinner', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@angular/common/http', '@angular/common'], factory) : (factory((global['ngh-spinner'] = {}),global.ng.core,global.rxjs,global.rxjs.operators,global.ng.common.http,global.ng.common)); }(this, (function (exports,i0,rxjs,operators,http,common) { 'use strict'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NghSpinnerService = (function () { function NghSpinnerService() { this.spinnerChange = new rxjs.Subject(); } /** * @return {?} */ NghSpinnerService.prototype.show = /** * @return {?} */ function () { console.log('ddd'); this.spinnerChange.next(true); }; /** * @return {?} */ NghSpinnerService.prototype.hide = /** * @return {?} */ function () { this.spinnerChange.next(false); }; /** * @return {?} */ NghSpinnerService.prototype.getState = /** * @return {?} */ function () { return this.spinnerChange.asObservable(); }; NghSpinnerService.decorators = [ { type: i0.Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ NghSpinnerService.ctorParameters = function () { return []; }; /** @nocollapse */ NghSpinnerService.ngInjectableDef = i0.defineInjectable({ factory: function NghSpinnerService_Factory() { return new NghSpinnerService(); }, token: NghSpinnerService, providedIn: "root" }); return NghSpinnerService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NghSpinnerComponent = (function () { function NghSpinnerComponent(spinnerService) { var _this = this; this.spinnerService = spinnerService; this.bgColor = 'rgba(0,0,0,0.5)'; this.color = '#2598db'; this.type = 'circle-clip'; this.showHide = false; this.subscription = this.spinnerService.getState().subscribe(function (showHide) { _this.showHide = showHide; }); } /** * @return {?} */ NghSpinnerComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; NghSpinnerComponent.decorators = [ { type: i0.Component, args: [{ selector: 'ngh-spinner', template: "<div class=\"overlay\" [ngStyle]=\"{'background-color':bgColor,'color': color}\" *ngIf=\"showHide\" >\n <div class=\"loader\" [ngClass]=\"type\">\n <div></div>\n </div>\n</div>", styles: [".overlay{position:fixed;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:2}.loader{position:absolute;top:50%;left:50%}.circle-clip{border:5px solid transparent;border-radius:50%;border-top:5px solid;width:25px;height:25px;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}.square-spin{border:5px solid;width:25px;height:25px;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}.bar-load{height:4px;position:relative;overflow:hidden;background-color:#c3c3c3;width:25%;left:37.5%}.bar-load div{display:block;position:absolute;content:\"\";left:-200px;width:200px;height:4px;background-color:currentColor;-webkit-animation:2s linear infinite loading;animation:2s linear infinite loading}@-webkit-keyframes loading{from{left:-200px;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}@keyframes loading{from{left:-200px;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}.bar-center{height:4px;position:relative;overflow:hidden;background-color:#c3c3c3;width:25%;left:37.5%}.bar-center div{content:\"\";display:inline;position:absolute;width:0;height:100%;left:50%;text-align:center;background-color:currentColor;-webkit-animation:3s linear infinite center-loading;animation:3s linear infinite center-loading}@-webkit-keyframes center-loading{from{left:50%;width:0;z-index:100}33.3333%{left:0;width:100%;z-index:10}to{left:0;width:100%}}@keyframes center-loading{from{left:50%;width:0;z-index:100}33.3333%{left:0;width:100%;z-index:10}to{left:0;width:100%}}.spinner{width:40px;height:40px;margin:40px;-webkit-animation:1.4s ease-in-out infinite rotate,1.4s ease-in-out infinite alternate background;animation:1.4s ease-in-out infinite rotate,1.4s ease-in-out infinite alternate background}@-webkit-keyframes rotate{0%{-webkit-transform:perspective(120px) rotateX(0) rotateY(0);transform:perspective(120px) rotateX(0) rotateY(0)}50%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(0);transform:perspective(120px) rotateX(-180deg) rotateY(0)}100%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-180deg);transform:perspective(120px) rotateX(-180deg) rotateY(-180deg)}}@keyframes rotate{0%{-webkit-transform:perspective(120px) rotateX(0) rotateY(0);transform:perspective(120px) rotateX(0) rotateY(0)}50%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(0);transform:perspective(120px) rotateX(-180deg) rotateY(0)}100%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-180deg);transform:perspective(120px) rotateX(-180deg) rotateY(-180deg)}}@-webkit-keyframes background{0%,100%,50%{background-color:currentColor}}@keyframes background{0%,100%,50%{background-color:currentColor}}.signal{border:5px solid currentColor;border-radius:30px;height:30px;left:50%;margin:-15px 0 0 -15px;opacity:0;position:absolute;top:50%;width:30px;-webkit-animation:1s ease-out infinite pulsate;animation:1s ease-out infinite pulsate}@-webkit-keyframes pulsate{0%{-webkit-transform:scale(.1);transform:scale(.1);opacity:0}50%{opacity:1}100%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:0}}@keyframes pulsate{0%{-webkit-transform:scale(.1);transform:scale(.1);opacity:0}50%{opacity:1}100%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:0}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}"] },] }, ]; /** @nocollapse */ NghSpinnerComponent.ctorParameters = function () { return [ { type: NghSpinnerService } ]; }; NghSpinnerComponent.propDecorators = { bgColor: [{ type: i0.Input }], color: [{ type: i0.Input }], type: [{ type: i0.Input }] }; return NghSpinnerComponent; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NghInterceptorService = (function () { function NghInterceptorService(nghSpinnerService) { this.nghSpinnerService = nghSpinnerService; } /** * @param {?} req * @param {?} next * @return {?} */ NghInterceptorService.prototype.intercept = /** * @param {?} req * @param {?} next * @return {?} */ function (req, next) { var _this = this; /** @type {?} */ var authReq = req.clone({ headers: req.headers.set("headerName", "headerValue") }); return next.handle(req).pipe(operators.map(function (event) { _this.nghSpinnerService.show(); return event; }), operators.catchError(function (error) { return rxjs.throwError(error); }), operators.finalize(function () { _this.nghSpinnerService.hide(); })); }; NghInterceptorService.decorators = [ { type: i0.Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ NghInterceptorService.ctorParameters = function () { return [ { type: NghSpinnerService } ]; }; /** @nocollapse */ NghInterceptorService.ngInjectableDef = i0.defineInjectable({ factory: function NghInterceptorService_Factory() { return new NghInterceptorService(i0.inject(NghSpinnerService)); }, token: NghInterceptorService, providedIn: "root" }); return NghInterceptorService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NghSpinnerModule = (function () { function NghSpinnerModule() { } NghSpinnerModule.decorators = [ { type: i0.NgModule, args: [{ imports: [ common.CommonModule ], providers: [ { provide: http.HTTP_INTERCEPTORS, useClass: NghInterceptorService, multi: true } ], declarations: [NghSpinnerComponent], exports: [NghSpinnerComponent] },] }, ]; return NghSpinnerModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ exports.NghSpinnerService = NghSpinnerService; exports.NghSpinnerComponent = NghSpinnerComponent; exports.NghSpinnerModule = NghSpinnerModule; exports.ɵa = NghInterceptorService; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdoLXNwaW5uZXIudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ2gtc3Bpbm5lci9saWIvbmdoLXNwaW5uZXIuc2VydmljZS50cyIsIm5nOi8vbmdoLXNwaW5uZXIvbGliL25naC1zcGlubmVyLmNvbXBvbmVudC50cyIsIm5nOi8vbmdoLXNwaW5uZXIvbGliL25naC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIiwibmc6Ly9uZ2gtc3Bpbm5lci9saWIvbmdoLXNwaW5uZXIubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5naFNwaW5uZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHNwaW5uZXJDaGFuZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBzaG93KCkge1xyXG5cdCAgY29uc29sZS5sb2coJ2RkZCcpO1xyXG4gICAgdGhpcy5zcGlubmVyQ2hhbmdlLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBoaWRlKCl7XHJcbiAgICB0aGlzLnNwaW5uZXJDaGFuZ2UubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3Bpbm5lckNoYW5nZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LE9uRGVzdHJveSxPbkNoYW5nZXMsIElucHV0ICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTmdoU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuL25naC1zcGlubmVyLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25naC1zcGlubmVyJyxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzpiZ0NvbG9yLCdjb2xvcic6IGNvbG9yfVwiICpuZ0lmPVwic2hvd0hpZGVcIiA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCIgW25nQ2xhc3NdPVwidHlwZVwiPlxyXG4gICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgPC9kaXY+XHJcbjwvZGl2PmAsXHJcbiAgc3R5bGVzOiBbYC5vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ei1pbmRleDoyfS5sb2FkZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uY2lyY2xlLWNsaXB7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjUwJTtib3JkZXItdG9wOjVweCBzb2xpZDt3aWR0aDoyNXB4O2hlaWdodDoyNXB4Oy13ZWJraXQtYW5pbWF0aW9uOjJzIGxpbmVhciBpbmZpbml0ZSBzcGluO2FuaW1hdGlvbjoycyBsaW5lYXIgaW5maW5pdGUgc3Bpbn0uc3F1YXJlLXNwaW57Ym9yZGVyOjVweCBzb2xpZDt3aWR0aDoyNXB4O2hlaWdodDoyNXB4Oy13ZWJraXQtYW5pbWF0aW9uOjJzIGxpbmVhciBpbmZpbml0ZSBzcGluO2FuaW1hdGlvbjoycyBsaW5lYXIgaW5maW5pdGUgc3Bpbn0uYmFyLWxvYWR7aGVpZ2h0OjRweDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojYzNjM2MzO3dpZHRoOjI1JTtsZWZ0OjM3LjUlfS5iYXItbG9hZCBkaXZ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OlwiXCI7bGVmdDotMjAwcHg7d2lkdGg6MjAwcHg7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjstd2Via2l0LWFuaW1hdGlvbjoycyBsaW5lYXIgaW5maW5pdGUgbG9hZGluZzthbmltYXRpb246MnMgbGluZWFyIGluZmluaXRlIGxvYWRpbmd9QC13ZWJraXQta2V5ZnJhbWVzIGxvYWRpbmd7ZnJvbXtsZWZ0Oi0yMDBweDt3aWR0aDozMCV9NTAle3dpZHRoOjMwJX03MCV7d2lkdGg6NzAlfTgwJXtsZWZ0OjUwJX05NSV7bGVmdDoxMjAlfXRve2xlZnQ6MTAwJX19QGtleWZyYW1lcyBsb2FkaW5ne2Zyb217bGVmdDotMjAwcHg7d2lkdGg6MzAlfTUwJXt3aWR0aDozMCV9NzAle3dpZHRoOjcwJX04MCV7bGVmdDo1MCV9OTUle2xlZnQ6MTIwJX10b3tsZWZ0OjEwMCV9fS5iYXItY2VudGVye2hlaWdodDo0cHg7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6I2MzYzNjMzt3aWR0aDoyNSU7bGVmdDozNy41JX0uYmFyLWNlbnRlciBkaXZ7Y29udGVudDpcIlwiO2Rpc3BsYXk6aW5saW5lO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjEwMCU7bGVmdDo1MCU7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3I7LXdlYmtpdC1hbmltYXRpb246M3MgbGluZWFyIGluZmluaXRlIGNlbnRlci1sb2FkaW5nO2FuaW1hdGlvbjozcyBsaW5lYXIgaW5maW5pdGUgY2VudGVyLWxvYWRpbmd9QC13ZWJraXQta2V5ZnJhbWVzIGNlbnRlci1sb2FkaW5ne2Zyb217bGVmdDo1MCU7d2lkdGg6MDt6LWluZGV4OjEwMH0zMy4zMzMzJXtsZWZ0OjA7d2lkdGg6MTAwJTt6LWluZGV4OjEwfXRve2xlZnQ6MDt3aWR0aDoxMDAlfX1Aa2V5ZnJhbWVzIGNlbnRlci1sb2FkaW5ne2Zyb217bGVmdDo1MCU7d2lkdGg6MDt6LWluZGV4OjEwMH0zMy4zMzMzJXtsZWZ0OjA7d2lkdGg6MTAwJTt6LWluZGV4OjEwfXRve2xlZnQ6MDt3aWR0aDoxMDAlfX0uc3Bpbm5lcnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbjo0MHB4Oy13ZWJraXQtYW5pbWF0aW9uOjEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgcm90YXRlLDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlIGJhY2tncm91bmQ7YW5pbWF0aW9uOjEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgcm90YXRlLDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlIGJhY2tncm91bmR9QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZXswJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMjBweCkgcm90YXRlWCgwKSByb3RhdGVZKDApO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMjBweCkgcm90YXRlWCgwKSByb3RhdGVZKDApfTUwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMjBweCkgcm90YXRlWCgtMTgwZGVnKSByb3RhdGVZKDApO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMjBweCkgcm90YXRlWCgtMTgwZGVnKSByb3RhdGVZKDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoLTE4MGRlZykgcm90YXRlWSgtMTgwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoLTE4MGRlZykgcm90YXRlWSgtMTgwZGVnKX19QGtleWZyYW1lcyByb3RhdGV7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKX01MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoLTE4MGRlZykgcm90YXRlWSgwKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTIwcHgpIHJvdGF0ZVgoLTE4MGRlZykgcm90YXRlWSgwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDEyMHB4KSByb3RhdGVYKC0xODBkZWcpIHJvdGF0ZVkoLTE4MGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDEyMHB4KSByb3RhdGVYKC0xODBkZWcpIHJvdGF0ZVkoLTE4MGRlZyl9fUAtd2Via2l0LWtleWZyYW1lcyBiYWNrZ3JvdW5kezAlLDEwMCUsNTAle2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfX1Aa2V5ZnJhbWVzIGJhY2tncm91bmR7MCUsMTAwJSw1MCV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9fS5zaWduYWx7Ym9yZGVyOjVweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czozMHB4O2hlaWdodDozMHB4O2xlZnQ6NTAlO21hcmdpbjotMTVweCAwIDAgLTE1cHg7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7d2lkdGg6MzBweDstd2Via2l0LWFuaW1hdGlvbjoxcyBlYXNlLW91dCBpbmZpbml0ZSBwdWxzYXRlO2FuaW1hdGlvbjoxcyBlYXNlLW91dCBpbmZpbml0ZSBwdWxzYXRlfUAtd2Via2l0LWtleWZyYW1lcyBwdWxzYXRlezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4xKTt0cmFuc2Zvcm06c2NhbGUoLjEpO29wYWNpdHk6MH01MCV7b3BhY2l0eToxfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4yKTt0cmFuc2Zvcm06c2NhbGUoMS4yKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgcHVsc2F0ZXswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguMSk7dHJhbnNmb3JtOnNjYWxlKC4xKTtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMik7dHJhbnNmb3JtOnNjYWxlKDEuMik7b3BhY2l0eTowfX1ALXdlYmtpdC1rZXlmcmFtZXMgc3BpbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMCl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBzcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwKTt0cmFuc2Zvcm06cm90YXRlKDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdoU3Bpbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAge1xyXG4gIEBJbnB1dCgpIGJnQ29sb3I9ICdyZ2JhKDAsMCwwLDAuNSknOyAvL292ZXJsYXkgYmFja2dyb3VuZCBjb2xvclxyXG4gIEBJbnB1dCgpIGNvbG9yPSAnIzI1OThkYic7IC8vIHNwaW5uZXIgY29sb3JcclxuICBASW5wdXQoKSB0eXBlPSAnY2lyY2xlLWNsaXAnOyAvLyBzcGlubmVyIHR5cGVcclxuICBzaG93SGlkZSA9ZmFsc2U7IC8vIFNob3cgb3IgSGlkZSBMb2FkZXJcclxuXHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzcGlubmVyU2VydmljZSA6IE5naFNwaW5uZXJTZXJ2aWNlKSB7IFxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPXRoaXMuc3Bpbm5lclNlcnZpY2UuZ2V0U3RhdGUoKS5zdWJzY3JpYmUoIHNob3dIaWRlID0+IHt0aGlzLnNob3dIaWRlID0gc2hvd0hpZGUgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTmdoU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuL25naC1zcGlubmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ2hJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdoU3Bpbm5lclNlcnZpY2U6IE5naFNwaW5uZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHsgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KFwiaGVhZGVyTmFtZVwiLCBcImhlYWRlclZhbHVlXCIpIH0pO1xyXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcclxuICAgICAgbWFwKGV2ZW50ID0+IHtcclxuICAgICAgICB0aGlzLm5naFNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgICAgICByZXR1cm4gZXZlbnQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uZ2hTcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIH0pXHJcblxyXG5cclxuICAgIClcclxuXHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ2hTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ2gtc3Bpbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ2hJbnRlcmNlcHRvclNlcnZpY2UgfSBmcm9tICcuL25naC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgIHVzZUNsYXNzOiBOZ2hJbnRlcmNlcHRvclNlcnZpY2UsXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW05naFNwaW5uZXJDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtOZ2hTcGlubmVyQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdoU3Bpbm5lck1vZHVsZSB7IH1cclxuIl0sIm5hbWVzIjpbIlN1YmplY3QiLCJJbmplY3RhYmxlIiwiQ29tcG9uZW50IiwiSW5wdXQiLCJtYXAiLCJjYXRjaEVycm9yIiwidGhyb3dFcnJvciIsImZpbmFsaXplIiwiTmdNb2R1bGUiLCJDb21tb25Nb2R1bGUiLCJIVFRQX0lOVEVSQ0VQVE9SUyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO1FBU0U7aUNBRndCLElBQUlBLFlB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