UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

921 lines 80 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ContentChildren, HostBinding, Input, Output, HostListener, QueryList, EventEmitter, ElementRef, ViewEncapsulation } from '@angular/core'; import { CarouselSlideComponent } from './carousel-slide/carousel-slide.component'; import * as touchEvent from '../core/util/touch-event'; var CarouselComponent = /** @class */ (function () { function CarouselComponent(_ele) { this._ele = _ele; this.style = { height: 'auto', width: '100%', transform: 'translate3d(0px, 0px, 0px)', margin: '' }; this.lastIndex = 0; this.currentSelectedIndex = 0; this._nodeArr = []; this._isMouseDown = false; this._rationWidth = 0; this._currentSlideWidth = 0; this._currentSlideHeight = 0; this._transition = ''; this._spaceWidth = 0; this._dragging = true; this._selectedIndex = 0; this.speed = 500; this.dots = true; this.vertical = false; this.autoplay = false; this.autoplayInterval = 3000; this.infinite = false; this.dotStyle = {}; this.dotActiveStyle = {}; this.frameOverflow = 'hidden'; this.cellSpacing = 0; this.slideWidth = 1; this.swipeSpeed = 12; this.dragging = true; this.afterChange = new EventEmitter(); this.beforeChange = new EventEmitter(); this.carouselWrapper = true; this.carouselwrap = true; } Object.defineProperty(CarouselComponent.prototype, "selectedIndex", { get: /** * @return {?} */ function () { return this._selectedIndex; }, set: /** * @param {?} value * @return {?} */ function (value) { this._selectedIndex = Math.abs(value); if (this._nodeArr.length > 0) { this.carousel(1); } }, enumerable: true, configurable: true }); /** * @param {?} event * @return {?} */ CarouselComponent.prototype.panstart = /** * @param {?} event * @return {?} */ function (event) { event.stopPropagation(); if (!this._dragging) { return; } this.stopTimer(); this._isMouseDown = true; this.touchObject = { startX: touchEvent.getEventTarget(event).pageX, startY: touchEvent.getEventTarget(event).pageY, direction: this.touchObject.direction }; }; /** * @param {?} event * @return {?} */ CarouselComponent.prototype.panmove = /** * @param {?} event * @return {?} */ function (event) { event.stopPropagation(); if (!this._dragging || !this._isMouseDown) { return; } var direction = this.swipeDirection(this.touchObject.startX, touchEvent.getEventTarget(event).pageX, this.touchObject.startY, touchEvent.getEventTarget(event).pageY).direction; if (direction === 0) { return; } /** @type {?} */ var length = this.vertical ? Math.abs(touchEvent.getEventTarget(event).pageY - this.touchObject.startY) : Math.abs(touchEvent.getEventTarget(event).pageX - this.touchObject.startX); /** @type {?} */ var offset = -this.touchObject.direction * length - this.currentSelectedIndex * this._rationWidth; this.touchObject = { startX: this.touchObject.startX, startY: this.touchObject.startY, endX: touchEvent.getEventTarget(event).pageX, endY: touchEvent.getEventTarget(event).pageY, length: length, direction: direction, offset: offset }; if (direction !== 0) { this.setSlideStyles(this.currentSelectedIndex, this.touchObject.direction); } this.getListStyles(offset); }; /** * @param {?} event * @return {?} */ CarouselComponent.prototype.panend = /** * @param {?} event * @return {?} */ function (event) { var _this = this; event.stopPropagation(); if (!this._dragging || !this._isMouseDown || !this.touchObject.length || this.touchObject.length === undefined) { this._isMouseDown = false; return; } this._isMouseDown = false; if (this.touchObject.length > this.swipeSpeed) { this.carousel(this.touchObject.direction); } else { this.getListStyles(this.touchObject.direction * this.touchObject.length + this.touchObject.offset); this.style['transition'] = this._transition; } setTimeout((/** * @return {?} */ function () { _this.startTimer(); }), this.speed); }; /** * @return {?} */ CarouselComponent.prototype.cancel = /** * @return {?} */ function () { var _this = this; setTimeout((/** * @return {?} */ function () { _this.startTimer(); }), this.speed); }; /** * @return {?} */ CarouselComponent.prototype.resize = /** * @return {?} */ function () { var _this = this; if (this._resizeTimer) { clearTimeout(this._resizeTimer); } this._resizeTimer = setTimeout((/** * @return {?} */ function () { _this.ngAfterViewInit(); clearTimeout(_this._resizeTimer); }), 200); }; /** * @return {?} */ CarouselComponent.prototype.initCarouselSize = /** * @return {?} */ function () { /** @type {?} */ var nativeElement = this._ele.nativeElement; this.slideHeight = nativeElement.querySelector('carouselslide').clientHeight; this._currentSlideHeight = this.slideHeight * this.slideWidth; this._currentSlideWidth = nativeElement.clientWidth; this._rationWidth = this.vertical ? this._currentSlideHeight : this._currentSlideWidth * this.slideWidth; this._spaceWidth = ((this.vertical ? this.slideHeight : this._currentSlideWidth) - this._rationWidth) / 2; }; /** * @param {?} items * @return {?} */ CarouselComponent.prototype.carouselInit = /** * @param {?} items * @return {?} */ function (items) { var _this = this; this.infinite = this.infinite || true; this._nodeArr = items['_results']; /** @type {?} */ var shouldDragging = this._nodeArr.length > 1; this._dragging = this.dragging && shouldDragging ? true : false; if (this._nodeArr.length > 1) { this.lastIndex = this._nodeArr.length - 1; setTimeout((/** * @return {?} */ function () { _this._nodeArr.forEach((/** * @param {?} v * @param {?} index * @return {?} */ function (v, index) { v.width = _this.vertical ? 'auto' : _this._rationWidth - _this.cellSpacing; v.left = _this.vertical ? 0 : index === _this.lastIndex ? -_this._rationWidth : index * _this._rationWidth; v.top = _this.vertical ? (index === _this.lastIndex ? -_this._rationWidth : index * _this._rationWidth) : 0; v.margin = _this.vertical ? _this.cellSpacing / 2 + "px auto" : "auto " + _this.cellSpacing / 2 + "px"; })); _this.startTimer(); }), 0); } else if (this._nodeArr.length === 1) { setTimeout((/** * @return {?} */ function () { _this._nodeArr.forEach((/** * @param {?} v * @return {?} */ function (v) { v.width = _this.vertical ? 'auto' : _this._rationWidth - _this.cellSpacing; v.left = 0; v.top = 0; v.margin = "auto " + _this.cellSpacing / 2 + "px"; })); }), 0); } }; /** * @return {?} */ CarouselComponent.prototype.startTimer = /** * @return {?} */ function () { var _this = this; if (!this.autoplay) { return; } this.stopTimer(); this._timer = this.autoplayInterval ? setInterval((/** * @return {?} */ function () { if (document.getElementsByTagName('carousel').length === 0) { return; } _this.carousel(1); }), this.autoplayInterval) : 0; }; /** * @return {?} */ CarouselComponent.prototype.stopTimer = /** * @return {?} */ function () { clearInterval(this._timer); }; /** * @param {?} moveDirection * @return {?} */ CarouselComponent.prototype.carousel = /** * @param {?} moveDirection * @return {?} */ function (moveDirection) { if (this.vertical) { if (moveDirection === 1) { this.moveUp(); } else if (moveDirection === -1) { this.moveDown(); } } else { if (moveDirection === 1) { this.moveLeft(); } else if (moveDirection === -1) { this.moveRight(); } } this.style['transition'] = this._transition; }; /** * @return {?} */ CarouselComponent.prototype.moveUp = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(false)); }; /** * @return {?} */ CarouselComponent.prototype.moveDown = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(true)); }; /** * @return {?} */ CarouselComponent.prototype.moveLeft = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(false)); }; /** * @return {?} */ CarouselComponent.prototype.moveRight = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(true)); }; /** * @param {?} pre * @return {?} */ CarouselComponent.prototype.getAfterNode = /** * @param {?} pre * @return {?} */ function (pre) { var _this = this; /** @type {?} */ var nextIndex; if (pre) { if (this.currentSelectedIndex <= 0) { this.getListStyles(this._rationWidth); setTimeout((/** * @return {?} */ function () { _this._nodeArr.forEach((/** * @param {?} v * @param {?} tempIndex * @return {?} */ function (v, tempIndex) { if (tempIndex === 0) { v.left = _this.vertical ? 0 : _this._nodeArr.length * _this._rationWidth; v.top = _this.vertical ? _this._nodeArr.length * _this._rationWidth : 0; } else { v.left = _this.vertical ? 0 : tempIndex * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } })); _this.getListStyles(-_this._rationWidth * (_this.items.length - 1)); }), this.speed); nextIndex = !this.infinite ? null : this.lastIndex; this.beforeChange.emit({ from: this.currentSelectedIndex, to: nextIndex }); return nextIndex; } nextIndex = this.currentSelectedIndex - 1; this.getListStyles(nextIndex * this._rationWidth * this.touchObject.direction); this._nodeArr.forEach((/** * @param {?} v * @param {?} tempIndex * @return {?} */ function (v, tempIndex) { if (0 === tempIndex && nextIndex === _this._nodeArr.length - 2) { v.left = 0; v.top = 0; } })); this.beforeChange.emit({ from: this.currentSelectedIndex, to: nextIndex }); return nextIndex; } else { if (this.currentSelectedIndex >= this.lastIndex) { this.setSlideStyles(this.currentSelectedIndex, 1); this.getListStyles(-(this.lastIndex + 1) * this._rationWidth); nextIndex = !this.infinite ? null : 0; this.beforeChange.emit({ from: this.currentSelectedIndex, to: nextIndex }); return nextIndex; } nextIndex = this.currentSelectedIndex + 1; this.setSlideStyles(this.currentSelectedIndex, 1); this.getListStyles(-nextIndex * this._rationWidth); this.beforeChange.emit({ from: this.currentSelectedIndex, to: nextIndex }); return nextIndex; } }; /** * @return {?} */ CarouselComponent.prototype.caculateDirectionLeftCurrentIndex = /** * @return {?} */ function () { /** @type {?} */ var previousIndex = this.currentSelectedIndex; this.currentSelectedIndex = (previousIndex + 1) % this.items.length; }; /** * @return {?} */ CarouselComponent.prototype.caculateDirectionRightCurrentIndex = /** * @return {?} */ function () { if (this.currentSelectedIndex === 0) { this.currentSelectedIndex = this.items.length; } /** @type {?} */ var previousIndex = this.currentSelectedIndex; this.currentSelectedIndex = (previousIndex - 1) % this.items.length; }; /** * @param {?} afterIndex * @return {?} */ CarouselComponent.prototype.gotoCarousel = /** * @param {?} afterIndex * @return {?} */ function (afterIndex) { var _this = this; if (afterIndex === null) { return; } this.getCurrentIndex(); if (afterIndex === 0) { setTimeout((/** * @return {?} */ function () { _this._nodeArr.forEach((/** * @param {?} v * @param {?} index * @return {?} */ function (v, index) { if (index === _this._nodeArr.length - 1) { v.left = _this.vertical ? 0 : -_this._rationWidth; v.top = _this.vertical ? -_this._rationWidth : 0; } else { v.left = _this.vertical ? 0 : index * _this._rationWidth; v.top = _this.vertical ? index * _this._rationWidth : 0; } })); _this.startTimer(); _this.getListStyles(0); }), this.speed); } this.currentSelectedIndex = afterIndex; this.afterChange.emit(this.currentSelectedIndex); }; /** * @return {?} */ CarouselComponent.prototype.getCurrentIndex = /** * @return {?} */ function () { if (this.touchObject.direction === 1) { this.caculateDirectionLeftCurrentIndex(); } else { this.caculateDirectionRightCurrentIndex(); } }; /** * @param {?} index * @param {?} direction * @param {?=} xDist * @return {?} */ CarouselComponent.prototype.setSlideStyles = /** * @param {?} index * @param {?} direction * @param {?=} xDist * @return {?} */ function (index, direction, xDist) { var _this = this; if (xDist === void 0) { xDist = 0; } if (direction === 1) { this._nodeArr.forEach((/** * @param {?} v * @param {?} tempIndex * @return {?} */ function (v, tempIndex) { if (index < _this._nodeArr.length && index - 1 === tempIndex) { if (xDist === 0 || xDist > _this._spaceWidth) { v.left = _this.vertical ? 0 : (_this._nodeArr.length + tempIndex) * _this._rationWidth; v.top = _this.vertical ? (_this._nodeArr.length + tempIndex) * _this._rationWidth : 0; } } else if (_this._nodeArr.length - 1 === tempIndex && index !== 2) { if (xDist === 0 || xDist > _this._spaceWidth) { v.left = _this.vertical ? 0 : (_this._nodeArr.length - 1) * _this._rationWidth; v.top = _this.vertical ? (_this._nodeArr.length - 1) * _this._rationWidth : 0; } } else if (index === _this._nodeArr.length - 1 && tempIndex === 1 && _this.autoplay) { v.left = _this.vertical ? 0 : (_this._nodeArr.length + tempIndex) * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } else if (index === _this._nodeArr.length - 1 && tempIndex === 0 && !_this.autoplay) { v.left = _this.vertical ? 0 : (_this._nodeArr.length + tempIndex) * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } })); } else if (direction === -1) { this._nodeArr.forEach((/** * @param {?} v * @param {?} tempIndex * @return {?} */ function (v, tempIndex) { if (index === 0 && _this._nodeArr.length - 1 === tempIndex) { v.left = _this.vertical ? 0 : direction * _this._rationWidth; v.top = _this.vertical ? direction * _this._rationWidth : 0; } else if (index === _this._nodeArr.length - 2 && index + 1 === tempIndex) { v.left = _this.vertical ? 0 : direction * _this._rationWidth; v.top = _this.vertical ? direction * _this._rationWidth : 0; } else if (index === 1 && 0 === tempIndex) { v.left = _this.vertical ? 0 : direction * _this._rationWidth * tempIndex; v.top = _this.vertical ? direction * _this._rationWidth : 0; } else if (index > 1) { v.left = _this.vertical ? 0 : tempIndex * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } })); } }; /** * @param {?=} offset * @return {?} */ CarouselComponent.prototype.getListStyles = /** * @param {?=} offset * @return {?} */ function (offset) { if (offset === void 0) { offset = 0; } /** @type {?} */ var positionOffset = offset + (this.vertical ? (this.slideHeight - this._currentSlideHeight) / 2 : (this._currentSlideWidth - this._rationWidth) / 2) - this.cellSpacing; this.style = { height: this._currentSlideHeight + 'px', width: '100%', transform: this.vertical ? "translate3d(0px, " + positionOffset + "px, 0px)" : "translate3d(" + positionOffset + "px, 0px, 0px)", margin: this.vertical ? (this.cellSpacing / 2) * -1 + "px 0px" : "0px " + (this.cellSpacing / 2) * -1 + "px" }; }; /** * @param {?} x1 * @param {?} x2 * @param {?} y1 * @param {?} y2 * @return {?} */ CarouselComponent.prototype.swipeDirection = /** * @param {?} x1 * @param {?} x2 * @param {?} y1 * @param {?} y2 * @return {?} */ function (x1, x2, y1, y2) { /** @type {?} */ var xDist = x1 - x2; /** @type {?} */ var yDist = y1 - y2; /** @type {?} */ var r = Math.atan2(yDist, xDist); /** @type {?} */ var swipeAngle = Math.round((r * 180) / Math.PI); if (swipeAngle < 0) { swipeAngle = 360 - Math.abs(swipeAngle); } if (swipeAngle <= 45 && swipeAngle >= 0) { return { direction: 1, xDist: xDist }; } if (swipeAngle <= 360 && swipeAngle >= 315) { return { direction: 1, xDist: xDist }; } if (swipeAngle >= 135 && swipeAngle <= 225) { return { direction: -1, xDist: xDist }; } if (this.vertical === true) { if (swipeAngle >= 35 + 33 && swipeAngle <= 135) { return { direction: 1, xDist: xDist }; } else { return { direction: -1, xDist: xDist }; } } return { direction: 0, xDist: xDist }; }; Object.defineProperty(CarouselComponent.prototype, "page", { get: /** * @return {?} */ function () { return this.dots ? this.currentSelectedIndex : 0; }, enumerable: true, configurable: true }); Object.defineProperty(CarouselComponent.prototype, "pageCount", { get: /** * @return {?} */ function () { return this.dots ? this.items.length : 0; }, enumerable: true, configurable: true }); Object.defineProperty(CarouselComponent.prototype, "dotindicatorStatus", { get: /** * @return {?} */ function () { return this.dots ? this.items.length > 1 : this.dots; }, enumerable: true, configurable: true }); /** * @return {?} */ CarouselComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; this.touchObject = { direction: 1 }; this._transition = "transform " + this.speed / 1000 + "s"; this.items.changes.subscribe((/** * @param {?} items * @return {?} */ function (items) { _this.carouselInit(items); })); this.initCarouselSize(); this.selectedIndex = this.items.length - 1 < this.selectedIndex ? 0 : this.selectedIndex; /** @type {?} */ var index = this.items.length > 1 ? (this.items.length - 1 === this.selectedIndex ? -1 : this.selectedIndex) : 0; setTimeout((/** * @return {?} */ function () { _this.currentSelectedIndex = _this.selectedIndex; }), 0); this.getListStyles(-index * this._rationWidth); this.carouselInit(this.items); /** @type {?} */ var nativeElement = this._ele.nativeElement; /** @type {?} */ var targetNode = nativeElement.querySelector('carouselslide'); /** @type {?} */ var config = { attributes: true, childList: true, subtree: true }; /** @type {?} */ var callback = (/** * @param {?} mutationsList * @return {?} */ function (mutationsList) { var e_1, _a; try { for (var mutationsList_1 = tslib_1.__values(mutationsList), mutationsList_1_1 = mutationsList_1.next(); !mutationsList_1_1.done; mutationsList_1_1 = mutationsList_1.next()) { var mutation = mutationsList_1_1.value; if (mutation.type == 'attributes') { if (_this.slideHeight !== nativeElement.querySelector('carouselslide').clientHeight) { _this.initCarouselSize(); _this.getListStyles(-index * _this._rationWidth); _this.carouselInit(_this.items); } } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (mutationsList_1_1 && !mutationsList_1_1.done && (_a = mutationsList_1.return)) _a.call(mutationsList_1); } finally { if (e_1) throw e_1.error; } } }); this._observer = new MutationObserver(callback); this._observer.observe(targetNode, config); }; /** * @return {?} */ CarouselComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this._observer.disconnect(); this._observer = null; this.stopTimer(); }; CarouselComponent.decorators = [ { type: Component, args: [{ selector: 'Carousel, nzm-carousel', encapsulation: ViewEncapsulation.None, template: "<div class=\"slider-frame\" [ngStyle]=\"{ overflow: frameOverflow }\">\n <ul class=\"slider-list\" [ngStyle]=\"style\">\n <ng-content></ng-content>\n </ul>\n</div>\n<DotIndicator\n *ngIf=\"dotindicatorStatus\"\n class=\"am-carousel-wrap-dot\"\n [page]=\"page\"\n [dotStyle]=\"dotStyle\"\n [pageCount]=\"pageCount\"\n [dotActiveStyle]=\"dotActiveStyle\"\n></DotIndicator>\n" }] } ]; /** @nocollapse */ CarouselComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; CarouselComponent.propDecorators = { items: [{ type: ContentChildren, args: [CarouselSlideComponent,] }], speed: [{ type: Input }], dots: [{ type: Input }], vertical: [{ type: Input }], autoplay: [{ type: Input }], autoplayInterval: [{ type: Input }], infinite: [{ type: Input }], dotStyle: [{ type: Input }], dotActiveStyle: [{ type: Input }], frameOverflow: [{ type: Input }], cellSpacing: [{ type: Input }], slideWidth: [{ type: Input }], swipeSpeed: [{ type: Input }], dragging: [{ type: Input }], selectedIndex: [{ type: Input }], afterChange: [{ type: Output }], beforeChange: [{ type: Output }], carouselWrapper: [{ type: HostBinding, args: ['class.am-carousel',] }], carouselwrap: [{ type: HostBinding, args: ['class.carousel',] }], panstart: [{ type: HostListener, args: ['mousedown', ['$event'],] }, { type: HostListener, args: ['touchstart', ['$event'],] }], panmove: [{ type: HostListener, args: ['mousemove', ['$event'],] }, { type: HostListener, args: ['touchmove', ['$event'],] }], panend: [{ type: HostListener, args: ['mouseleave', ['$event'],] }, { type: HostListener, args: ['mouseup', ['$event'],] }, { type: HostListener, args: ['touchend', ['$event'],] }], cancel: [{ type: HostListener, args: ['touchcancel',] }], resize: [{ type: HostListener, args: ['window:resize',] }] }; return CarouselComponent; }()); export { CarouselComponent }; if (false) { /** @type {?} */ CarouselComponent.prototype.slideHeight; /** @type {?} */ CarouselComponent.prototype.touchObject; /** @type {?} */ CarouselComponent.prototype.style; /** @type {?} */ CarouselComponent.prototype.lastIndex; /** @type {?} */ CarouselComponent.prototype.currentSelectedIndex; /** * @type {?} * @private */ CarouselComponent.prototype._timer; /** * @type {?} * @private */ CarouselComponent.prototype._resizeTimer; /** * @type {?} * @private */ CarouselComponent.prototype._nodeArr; /** * @type {?} * @private */ CarouselComponent.prototype._isMouseDown; /** * @type {?} * @private */ CarouselComponent.prototype._rationWidth; /** * @type {?} * @private */ CarouselComponent.prototype._currentSlideWidth; /** * @type {?} * @private */ CarouselComponent.prototype._currentSlideHeight; /** * @type {?} * @private */ CarouselComponent.prototype._transition; /** * @type {?} * @private */ CarouselComponent.prototype._spaceWidth; /** * @type {?} * @private */ CarouselComponent.prototype._observer; /** * @type {?} * @private */ CarouselComponent.prototype._dragging; /** * @type {?} * @private */ CarouselComponent.prototype._selectedIndex; /** @type {?} */ CarouselComponent.prototype.items; /** @type {?} */ CarouselComponent.prototype.speed; /** @type {?} */ CarouselComponent.prototype.dots; /** @type {?} */ CarouselComponent.prototype.vertical; /** @type {?} */ CarouselComponent.prototype.autoplay; /** @type {?} */ CarouselComponent.prototype.autoplayInterval; /** @type {?} */ CarouselComponent.prototype.infinite; /** @type {?} */ CarouselComponent.prototype.dotStyle; /** @type {?} */ CarouselComponent.prototype.dotActiveStyle; /** @type {?} */ CarouselComponent.prototype.frameOverflow; /** @type {?} */ CarouselComponent.prototype.cellSpacing; /** @type {?} */ CarouselComponent.prototype.slideWidth; /** @type {?} */ CarouselComponent.prototype.swipeSpeed; /** @type {?} */ CarouselComponent.prototype.dragging; /** @type {?} */ CarouselComponent.prototype.afterChange; /** @type {?} */ CarouselComponent.prototype.beforeChange; /** @type {?} */ CarouselComponent.prototype.carouselWrapper; /** @type {?} */ CarouselComponent.prototype.carouselwrap; /** * @type {?} * @private */ CarouselComponent.prototype._ele; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC1tb2JpbGUvIiwic291cmNlcyI6WyJjYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBRVYsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sS0FBSyxVQUFVLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQ7SUEwS0UsMkJBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFsS3BDLFVBQUssR0FBRztZQUNOLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsNEJBQTRCO1lBQ3ZDLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUNGLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIseUJBQW9CLEdBQVcsQ0FBQyxDQUFDO1FBSXpCLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBQy9CLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQUNoQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUV4QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBTW5DLFVBQUssR0FBVyxHQUFHLENBQUM7UUFFcEIsU0FBSSxHQUFZLElBQUksQ0FBQztRQUVyQixhQUFRLEdBQVks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Ozs7OztZQUFDLFVBQUMsQ0FBQyxFQUFFLFNBQVM7Z0JBQ2pDLElBQUksS0FBSyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUMzRCxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQzNDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUM7d0JBQ3BGLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3BGO2lCQUNGO3FCQUFNLElBQUksS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO29CQUNoRSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQzNDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUM7d0JBQzVFLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzVFO2lCQUNGO3FCQUFNLElBQUksS0FBSyxLQUFLLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLEtBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2pGLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ3BGLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7cUJBQU0sSUFBSSxLQUFLLEtBQUssS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsUUFBUSxFQUFFO29CQUNsRixDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDO29CQUNwRixDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO1lBQ0gsQ0FBQyxFQUFDLENBQUM7U0FDSjthQUFNLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTzs7Ozs7WUFBQyxVQUFDLENBQUMsRUFBRSxTQUFTO2dCQUNqQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDekQsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDO29CQUMzRCxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO3FCQUFNLElBQUksS0FBSyxLQUFLLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDeEUsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDO29CQUMzRCxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO3FCQUFNLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUN6QyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO29CQUN2RSxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO3FCQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDcEIsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJ