UNPKG

lightgallery

Version:

lightGallery is a feature-rich, modular JavaScript gallery plugin for building beautiful image and video galleries for the web and the mobile

192 lines 28.8 kB
import { Component, Input } from '@angular/core'; import lightGallery from 'lightgallery'; import * as i0 from "@angular/core"; const _c0 = ["*"]; const LgMethods = { onAfterAppendSlide: 'lgAfterAppendSlide', onInit: 'lgInit', onHasVideo: 'lgHasVideo', onContainerResize: 'lgContainerResize', onUpdateSlides: 'lgUpdateSlides', onAfterAppendSubHtml: 'lgAfterAppendSubHtml', onBeforeOpen: 'lgBeforeOpen', onAfterOpen: 'lgAfterOpen', onSlideItemLoad: 'lgSlideItemLoad', onBeforeSlide: 'lgBeforeSlide', onAfterSlide: 'lgAfterSlide', onPosterClick: 'lgPosterClick', onDragStart: 'lgDragStart', onDragMove: 'lgDragMove', onDragEnd: 'lgDragEnd', onBeforeNextSlide: 'lgBeforeNextSlide', onBeforePrevSlide: 'lgBeforePrevSlide', onBeforeClose: 'lgBeforeClose', onAfterClose: 'lgAfterClose', }; export class LightgalleryComponent { constructor(_elementRef) { this._elementRef = _elementRef; this.lgInitialized = false; this._elementRef = _elementRef; } ngAfterViewChecked() { if (!this.lgInitialized) { this.registerEvents(); this.LG = lightGallery(this._elementRef.nativeElement, this.settings); this.lgInitialized = true; } } ngOnDestroy() { this.LG.destroy(); this.lgInitialized = false; } registerEvents() { if (this.onAfterAppendSlide) { this._elementRef.nativeElement.addEventListener(LgMethods.onAfterAppendSlide, ((event) => { this.onAfterAppendSlide && this.onAfterAppendSlide(event.detail); })); } if (this.onInit) { this._elementRef.nativeElement.addEventListener(LgMethods.onInit, ((event) => { this.onInit && this.onInit(event.detail); })); } if (this.onHasVideo) { this._elementRef.nativeElement.addEventListener(LgMethods.onHasVideo, ((event) => { this.onHasVideo && this.onHasVideo(event.detail); })); } if (this.onContainerResize) { this._elementRef.nativeElement.addEventListener(LgMethods.onContainerResize, ((event) => { this.onContainerResize && this.onContainerResize(event.detail); })); } if (this.onAfterAppendSubHtml) { this._elementRef.nativeElement.addEventListener(LgMethods.onAfterAppendSubHtml, ((event) => { this.onAfterAppendSubHtml && this.onAfterAppendSubHtml(event.detail); })); } if (this.onBeforeOpen) { this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeOpen, ((event) => { this.onBeforeOpen && this.onBeforeOpen(event.detail); })); } if (this.onAfterOpen) { this._elementRef.nativeElement.addEventListener(LgMethods.onAfterOpen, ((event) => { this.onAfterOpen && this.onAfterOpen(event.detail); })); } if (this.onSlideItemLoad) { this._elementRef.nativeElement.addEventListener(LgMethods.onSlideItemLoad, ((event) => { this.onSlideItemLoad && this.onSlideItemLoad(event.detail); })); } if (this.onBeforeSlide) { this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeSlide, ((event) => { this.onBeforeSlide && this.onBeforeSlide(event.detail); })); } if (this.onAfterSlide) { this._elementRef.nativeElement.addEventListener(LgMethods.onAfterSlide, ((event) => { this.onAfterSlide && this.onAfterSlide(event.detail); })); } if (this.onPosterClick) { this._elementRef.nativeElement.addEventListener(LgMethods.onPosterClick, ((event) => { this.onPosterClick && this.onPosterClick(event.detail); })); } if (this.onDragStart) { this._elementRef.nativeElement.addEventListener(LgMethods.onDragStart, ((event) => { this.onDragStart && this.onDragStart(event.detail); })); } if (this.onDragMove) { this._elementRef.nativeElement.addEventListener(LgMethods.onDragMove, ((event) => { this.onDragMove && this.onDragMove(event.detail); })); } if (this.onDragEnd) { this._elementRef.nativeElement.addEventListener(LgMethods.onDragEnd, ((event) => { this.onDragEnd && this.onDragEnd(event.detail); })); } if (this.onBeforeNextSlide) { this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeNextSlide, ((event) => { this.onBeforeNextSlide && this.onBeforeNextSlide(event.detail); })); } if (this.onBeforePrevSlide) { this._elementRef.nativeElement.addEventListener(LgMethods.onBeforePrevSlide, ((event) => { this.onBeforePrevSlide && this.onBeforePrevSlide(event.detail); })); } if (this.onBeforeClose) { this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeClose, ((event) => { this.onBeforeClose && this.onBeforeClose(event.detail); })); } if (this.onAfterClose) { this._elementRef.nativeElement.addEventListener(LgMethods.onAfterClose, ((event) => { this.onAfterClose && this.onAfterClose(event.detail); })); } } } LightgalleryComponent.ɵfac = function LightgalleryComponent_Factory(t) { return new (t || LightgalleryComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; LightgalleryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: LightgalleryComponent, selectors: [["lightgallery"]], inputs: { settings: "settings", onAfterAppendSlide: "onAfterAppendSlide", onInit: "onInit", onHasVideo: "onHasVideo", onContainerResize: "onContainerResize", onAfterAppendSubHtml: "onAfterAppendSubHtml", onBeforeOpen: "onBeforeOpen", onAfterOpen: "onAfterOpen", onSlideItemLoad: "onSlideItemLoad", onBeforeSlide: "onBeforeSlide", onAfterSlide: "onAfterSlide", onPosterClick: "onPosterClick", onDragStart: "onDragStart", onDragMove: "onDragMove", onDragEnd: "onDragEnd", onBeforeNextSlide: "onBeforeNextSlide", onBeforePrevSlide: "onBeforePrevSlide", onBeforeClose: "onBeforeClose", onAfterClose: "onAfterClose" }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function LightgalleryComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵprojectionDef(); i0.ɵɵprojection(0); } }, encapsulation: 2 }); /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(LightgalleryComponent, [{ type: Component, args: [{ selector: 'lightgallery', template: '<ng-content></ng-content>', styles: [], }] }], function () { return [{ type: i0.ElementRef }]; }, { settings: [{ type: Input }], onAfterAppendSlide: [{ type: Input }], onInit: [{ type: Input }], onHasVideo: [{ type: Input }], onContainerResize: [{ type: Input }], onAfterAppendSubHtml: [{ type: Input }], onBeforeOpen: [{ type: Input }], onAfterOpen: [{ type: Input }], onSlideItemLoad: [{ type: Input }], onBeforeSlide: [{ type: Input }], onAfterSlide: [{ type: Input }], onPosterClick: [{ type: Input }], onDragStart: [{ type: Input }], onDragMove: [{ type: Input }], onDragEnd: [{ type: Input }], onBeforeNextSlide: [{ type: Input }], onBeforePrevSlide: [{ type: Input }], onBeforeClose: [{ type: Input }], onAfterClose: [{ type: Input }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRnYWxsZXJ5LWFuZ3VsYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9zYWNoaW4vd29ya3NwYWNlL2xpZ2h0R2FsbGVyeS9naC1wYWdlcy9saWdodEdhbGxlcnkvbGlnaHRnYWxsZXJ5LWFuZ3VsYXIvMTAvcHJvamVjdHMvbGlnaHRnYWxsZXJ5LWFuZ3VsYXIxMC9zcmMvIiwic291cmNlcyI6WyJsaWIvbGlnaHRnYWxsZXJ5LWFuZ3VsYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sWUFBWSxNQUFNLGNBQWMsQ0FBQzs7O0FBc0J4QyxNQUFNLFNBQVMsR0FBRztJQUNkLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsWUFBWTtJQUN4QixpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxvQkFBb0IsRUFBRSxzQkFBc0I7SUFDNUMsWUFBWSxFQUFFLGNBQWM7SUFDNUIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxhQUFhLEVBQUUsZUFBZTtJQUM5QixZQUFZLEVBQUUsY0FBYztJQUM1QixhQUFhLEVBQUUsZUFBZTtJQUM5QixXQUFXLEVBQUUsYUFBYTtJQUMxQixVQUFVLEVBQUUsWUFBWTtJQUN4QixTQUFTLEVBQUUsV0FBVztJQUN0QixpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFlBQVksRUFBRSxjQUFjO0NBQy9CLENBQUM7QUFPRixNQUFNLE9BQU8scUJBQXFCO0lBRzlCLFlBQW9CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBRG5DLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FB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LElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekQsQ0FBQyxDQUFrQixDQUN0QixDQUFDO1NBQ0w7SUFDTCxDQUFDOzswRkFoTVEscUJBQXFCOzBEQUFyQixxQkFBcUI7O1FBSG5CLGtCQUFZOztrREFHZCxxQkFBcUI7Y0FMakMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxNQUFNLEVBQUUsRUFBRTthQUNiOzZEQVFZLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbGlnaHRHYWxsZXJ5IGZyb20gJ2xpZ2h0Z2FsbGVyeSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQXBwZW5kU3ViSHRtbERldGFpbCxcbiAgICBBZnRlckNsb3NlRGV0YWlsLFxuICAgIEFmdGVyT3BlbkRldGFpbCxcbiAgICBBZnRlclNsaWRlRGV0YWlsLFxuICAgIEJlZm9yZUNsb3NlRGV0YWlsLFxuICAgIEJlZm9yZU5leHRTbGlkZURldGFpbCxcbiAgICBCZWZvcmVPcGVuRGV0YWlsLFxuICAgIEJlZm9yZVByZXZTbGlkZURldGFpbCxcbiAgICBCZWZvcmVTbGlkZURldGFpbCxcbiAgICBDb250YWluZXJSZXNpemVEZXRhaWwsXG4gICAgRHJhZ0VuZERldGFpbCxcbiAgICBEcmFnTW92ZURldGFpbCxcbiAgICBEcmFnU3RhcnREZXRhaWwsXG4gICAgSW5pdERldGFpbCxcbiAgICBQb3N0ZXJDbGlja0RldGFpbCxcbiAgICBTbGlkZUl0ZW1Mb2FkRGV0YWlsLFxufSBmcm9tICdsaWdodGdhbGxlcnkvbGctZXZlbnRzJztcbmltcG9ydCB7IExpZ2h0R2FsbGVyeVNldHRpbmdzIH0gZnJvbSAnbGlnaHRnYWxsZXJ5L2xnLXNldHRpbmdzJztcbmltcG9ydCB7IExpZ2h0R2FsbGVyeSB9IGZyb20gJ2xpZ2h0Z2FsbGVyeS9saWdodGdhbGxlcnknO1xuXG5jb25zdCBMZ01ldGhvZHMgPSB7XG4gICAgb25BZnRlckFwcGVuZFNsaWRlOiAnbGdBZnRlckFwcGVuZFNsaWRlJyxcbiAgICBvbkluaXQ6ICdsZ0luaXQnLFxuICAgIG9uSGFzVmlkZW86ICdsZ0hhc1ZpZGVvJyxcbiAgICBvbkNvbnRhaW5lclJlc2l6ZTogJ2xnQ29udGFpbmVyUmVzaXplJyxcbiAgICBvblVwZGF0ZVNsaWRlczogJ2xnVXBkYXRlU2xpZGVzJyxcbiAgICBvbkFmdGVyQXBwZW5kU3ViSHRtbDogJ2xnQWZ0ZXJBcHBlbmRTdWJIdG1sJyxcbiAgICBvbkJlZm9yZU9wZW46ICdsZ0JlZm9yZU9wZW4nLFxuICAgIG9uQWZ0ZXJPcGVuOiAnbGdBZnRlck9wZW4nLFxuICAgIG9uU2xpZGVJdGVtTG9hZDogJ2xnU2xpZGVJdGVtTG9hZCcsXG4gICAgb25CZWZvcmVTbGlkZTogJ2xnQmVmb3JlU2xpZGUnLFxuICAgIG9uQWZ0ZXJTbGlkZTogJ2xnQWZ0ZXJTbGlkZScsXG4gICAgb25Qb3N0ZXJDbGljazogJ2xnUG9zdGVyQ2xpY2snLFxuICAgIG9uRHJhZ1N0YXJ0OiAnbGdEcmFnU3RhcnQnLFxuICAgIG9uRHJhZ01vdmU6ICdsZ0RyYWdNb3ZlJyxcbiAgICBvbkRyYWdFbmQ6ICdsZ0RyYWdFbmQnLFxuICAgIG9uQmVmb3JlTmV4dFNsaWRlOiAnbGdCZWZvcmVOZXh0U2xpZGUnLFxuICAgIG9uQmVmb3JlUHJldlNsaWRlOiAnbGdCZWZvcmVQcmV2U2xpZGUnLFxuICAgIG9uQmVmb3JlQ2xvc2U6ICdsZ0JlZm9yZUNsb3NlJyxcbiAgICBvbkFmdGVyQ2xvc2U6ICdsZ0FmdGVyQ2xvc2UnLFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWdodGdhbGxlcnknLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlnaHRnYWxsZXJ5Q29tcG9uZW50IHtcbiAgICBwcml2YXRlIExHITogTGlnaHRHYWxsZXJ5O1xuICAgIHByaXZhdGUgbGdJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZiA9IF9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldHRpbmdzITogTGlnaHRHYWxsZXJ5U2V0dGluZ3M7XG4gICAgQElucHV0KCkgb25BZnRlckFwcGVuZFNsaWRlPzogKGRldGFpbDogQWZ0ZXJTbGlkZURldGFpbCkgPT4gdm9pZDtcbiAgICBASW5wdXQoKSBvbkluaXQ/OiAoZGV0YWlsOiBJbml0RGV0YWlsKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpIG9uSGFzVmlkZW8/OiAoZGV0YWlsOiBJbml0RGV0YWlsKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpIG9uQ29udGFpbmVyUmVzaXplPzogKGRldGFpbDogQ29udGFpbmVyUmVzaXplRGV0YWlsKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpIG9uQWZ0ZXJBcHBlbmRTdWJIdG1sPzogKGRldGFpbDogQWZ0ZXJBcHBlbmRTdWJIdG1sRGV0YWlsKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpIG9uQmVmb3JlT3Blbj86IChkZXRhaWw6IEJlZm9yZU9wZW5EZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25BZnRlck9wZW4/OiAoZGV0YWlsOiBBZnRlck9wZW5EZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25TbGlkZUl0ZW1Mb2FkPzogKGRldGFpbDogU2xpZGVJdGVtTG9hZERldGFpbCkgPT4gdm9pZDtcbiAgICBASW5wdXQoKSBvbkJlZm9yZVNsaWRlPzogKGRldGFpbDogQmVmb3JlU2xpZGVEZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25BZnRlclNsaWRlPzogKGRldGFpbDogQWZ0ZXJTbGlkZURldGFpbCkgPT4gdm9pZDtcbiAgICBASW5wdXQoKSBvblBvc3RlckNsaWNrPzogKGRldGFpbDogUG9zdGVyQ2xpY2tEZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25EcmFnU3RhcnQ/OiAoZGV0YWlsOiBEcmFnU3RhcnREZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25EcmFnTW92ZT86IChkZXRhaWw6IERyYWdNb3ZlRGV0YWlsKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpIG9uRHJhZ0VuZD86IChkZXRhaWw6IERyYWdFbmREZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25CZWZvcmVOZXh0U2xpZGU/OiAoZGV0YWlsOiBCZWZvcmVOZXh0U2xpZGVEZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25CZWZvcmVQcmV2U2xpZGU/OiAoZGV0YWlsOiBCZWZvcmVQcmV2U2xpZGVEZXRhaWwpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgb25CZWZvcmVDbG9zZT86IChkZXRhaWw6IEJlZm9yZUNsb3NlRGV0YWlsKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpIG9uQWZ0ZXJDbG9zZT86IChkZXRhaWw6IEFmdGVyQ2xvc2VEZXRhaWwpID0+IHZvaWQ7XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sZ0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgICAgICAgICB0aGlzLkxHID0gbGlnaHRHYWxsZXJ5KFxuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMubGdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5MRy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubGdJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9uQWZ0ZXJBcHBlbmRTbGlkZSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uQWZ0ZXJBcHBlbmRTbGlkZSxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQWZ0ZXJBcHBlbmRTbGlkZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFmdGVyQXBwZW5kU2xpZGUoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkluaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKExnTWV0aG9kcy5vbkluaXQsICgoXG4gICAgICAgICAgICAgICAgZXZlbnQ6IEN1c3RvbUV2ZW50LFxuICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkluaXQgJiYgdGhpcy5vbkluaXQoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgIH0pIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9uSGFzVmlkZW8pIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkhhc1ZpZGVvLFxuICAgICAgICAgICAgICAgICgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25IYXNWaWRlbyAmJiB0aGlzLm9uSGFzVmlkZW8oZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkNvbnRhaW5lclJlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uQ29udGFpbmVyUmVzaXplLFxuICAgICAgICAgICAgICAgICgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Db250YWluZXJSZXNpemUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Db250YWluZXJSZXNpemUoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkFmdGVyQXBwZW5kU3ViSHRtbCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uQWZ0ZXJBcHBlbmRTdWJIdG1sLFxuICAgICAgICAgICAgICAgICgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25BZnRlckFwcGVuZFN1Ykh0bWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25BZnRlckFwcGVuZFN1Ykh0bWwoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkJlZm9yZU9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkJlZm9yZU9wZW4sXG4gICAgICAgICAgICAgICAgKChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkJlZm9yZU9wZW4gJiYgdGhpcy5vbkJlZm9yZU9wZW4oZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkFmdGVyT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uQWZ0ZXJPcGVuLFxuICAgICAgICAgICAgICAgICgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25BZnRlck9wZW4gJiYgdGhpcy5vbkFmdGVyT3BlbihldmVudC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIH0pIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9uU2xpZGVJdGVtTG9hZCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uU2xpZGVJdGVtTG9hZCxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2xpZGVJdGVtTG9hZCAmJiB0aGlzLm9uU2xpZGVJdGVtTG9hZChldmVudC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIH0pIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9uQmVmb3JlU2xpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkJlZm9yZVNsaWRlLFxuICAgICAgICAgICAgICAgICgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25CZWZvcmVTbGlkZSAmJiB0aGlzLm9uQmVmb3JlU2xpZGUoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkFmdGVyU2xpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkFmdGVyU2xpZGUsXG4gICAgICAgICAgICAgICAgKChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFmdGVyU2xpZGUgJiYgdGhpcy5vbkFmdGVyU2xpZGUoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vblBvc3RlckNsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICBMZ01ldGhvZHMub25Qb3N0ZXJDbGljayxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUG9zdGVyQ2xpY2sgJiYgdGhpcy5vblBvc3RlckNsaWNrKGV2ZW50LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfSkgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub25EcmFnU3RhcnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkRyYWdTdGFydCxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRHJhZ1N0YXJ0ICYmIHRoaXMub25EcmFnU3RhcnQoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBFdmVudExpc3RlbmVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkRyYWdNb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICBMZ01ldGhvZHMub25EcmFnTW92ZSxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRHJhZ01vdmUgJiYgdGhpcy5vbkRyYWdNb3ZlKGV2ZW50LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfSkgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub25EcmFnRW5kKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICBMZ01ldGhvZHMub25EcmFnRW5kLFxuICAgICAgICAgICAgICAgICgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EcmFnRW5kICYmIHRoaXMub25EcmFnRW5kKGV2ZW50LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfSkgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub25CZWZvcmVOZXh0U2xpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkJlZm9yZU5leHRTbGlkZSxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmVmb3JlTmV4dFNsaWRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmVmb3JlTmV4dFNsaWRlKGV2ZW50LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfSkgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub25CZWZvcmVQcmV2U2xpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIExnTWV0aG9kcy5vbkJlZm9yZVByZXZTbGlkZSxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmVmb3JlUHJldlNsaWRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmVmb3JlUHJldlNsaWRlKGV2ZW50LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfSkgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub25CZWZvcmVDbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uQmVmb3JlQ2xvc2UsXG4gICAgICAgICAgICAgICAgKChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkJlZm9yZUNsb3NlICYmIHRoaXMub25CZWZvcmVDbG9zZShldmVudC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIH0pIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9uQWZ0ZXJDbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgTGdNZXRob2RzLm9uQWZ0ZXJDbG9zZSxcbiAgICAgICAgICAgICAgICAoKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQWZ0ZXJDbG9zZSAmJiB0aGlzLm9uQWZ0ZXJDbG9zZShldmVudC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIH0pIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19