UNPKG

@logo-software/timer

Version:

Timer helps developer to set a specific time for their web apps and doSomething after completed.

108 lines 25.6 kB
/** * @license * Copyright LOGO YAZILIM SANAYİ VE TİCARET A.Ş. All Rights Reserved. * * Save to the extent permitted by law, you may not use, copy, modify, * distribute or create derivative works of this material or any part * of it without the prior written consent of LOGO YAZILIM SANAYİ VE TİCARET A.Ş. Limited. * Any reproduction of this material must contain this notice. */ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { TimerService } from './timer.service'; import { TimePipe } from './pipe/time.pipe'; /** * Timer library lets your users to know their time in your app. * Add the below code to your code stack and give initializer parameters. * * <sub>app.component.html</sub> * * ```html * <logo-timer * [timeInMs]="1234567" * [id]="'myLogoTimer'" * [title]="'Estimated Time'" * [cssClasses]="'my-logo-timer-theme'" * [theme]="'primary'" * [isCountdown]="true" * [showIcon]="true" * [showProgressBar]="true" * [autoStart]="true" * [language]="{days: 'Gün', hours: 'Saat', minutes: 'Dk', seconds: 'Sn'}" * (onTimeCompleted)="sampleOnTimeEnd($event)" * > * </logo-timer> * ``` */ export class TimerComponent { constructor(timerService) { this.timerService = timerService; /** * If set true, timer works as countdown clock, else timer starts from zero. */ this.isCountdown = true; /** * The Logo Theme based themes of the timer. */ this.theme = 'primary'; /** * Show icon or not before the timer text. */ this.showIcon = false; /** * Show progress bar or not after the title text. */ this.showProgressBar = false; /** * Auto start timer onInit or trigger it by your own function options. If set true, timer will start on init of the library else you need to start by your own trigger function. Default is true. */ this.autoStart = true; /** * Output of the completed timer. It returns the id that setted. */ this.onTimeCompleted = new EventEmitter(); this.watchTimer = this.timerService.isEnded.subscribe(x => { x ? this.onTimeCompleted.emit(this.id) : ''; }); } ngOnInit() { if (this.isCountdown) { this.timerService.timerCount = this.timeInMs; } else { this.timerService.timerCount = 0; this.timerService.endTime = this.timeInMs; } this.timerService.autoStart = this.autoStart; this.timerService.language = this.language; this.timerService.countdown = this.isCountdown; this.timerService.prepareTimer(); } ngOnDestroy() { this.watchTimer.unsubscribe(); } } TimerComponent.decorators = [ { type: Component, args: [{ selector: 'logo-timer', template: "<div class=\"logo-timer {{cssClasses}}\">\n <div *ngIf=\"showIcon\" class=\"icon-base\">\n <span class=\"le-time_clock_three\"></span>\n </div>\n <div class=\"timer-title\">\n <p>{{title}}</p>\n <div *ngIf=\"showProgressBar\" class=\"progress-base\">\n <logo-progress-bar\n [complete]=\"timeInMs\"\n [cssClasses]=\"'timer-progress-bar'\"\n [current]=\"timerService.timerCount\"\n [size]=\"'small'\"\n [theme]=\"theme\"\n >\n </logo-progress-bar>\n </div>\n </div>\n <div class=\"timer-base {{theme}}\">\n <div [innerHTML]=\"timerService.readableTime\" class=\"counter\"></div>\n </div>\n</div>\n", providers: [TimePipe], styles: [".dotted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logo-tooltip .tip.on-bottom:after,.logo-tooltip .tip.on-top:after{border-left:7px solid transparent;border-right:7px solid transparent}.logo-tooltip .tip.on-left:after,.logo-tooltip .tip.on-right:after{border-top:7px solid transparent;border-bottom:7px solid transparent}.logo-tooltip{position:relative;color:#e94a34;cursor:pointer}.logo-tooltip .tip{position:absolute;width:180px;color:#fff;font-size:14px;font-style:normal;line-height:1.4;text-align:center;border-radius:3px;background:#333;padding:8px 12px;box-sizing:border-box;cursor:auto;z-index:10;opacity:0;visibility:hidden;transition:all .25s ease-in}.logo-tooltip .tip:after{position:absolute;width:0;height:0;content:\"\"}.logo-tooltip .tip.on-top{bottom:25px;left:0}.logo-tooltip .tip.on-top:after{bottom:-7px;left:10px;border-top:7px solid #333}.logo-tooltip .tip.on-right{top:-5px;left:103%}.logo-tooltip .tip.on-right:after{top:37%;left:-7px;border-right:7px solid #333}.logo-tooltip .tip.on-bottom{top:25px;left:0}.logo-tooltip .tip.on-bottom:after{top:-7px;left:10px;border-bottom:7px solid #333}.logo-tooltip .tip.on-left{top:-100%;right:103%}.logo-tooltip .tip.on-left:after{top:37%;right:-7px;border-left:7px solid #333}.logo-tooltip:hover .tip{opacity:1;visibility:visible}.logo-tooltip:hover .tip.on-top{transform:translateY(-15px)}.logo-tooltip:hover .tip.on-right{transform:translateX(15px)}.logo-tooltip:hover .tip.on-bottom{transform:translateY(15px)}.logo-tooltip:hover .tip.on-left{transform:translateX(-15px)}.test{content:\"a\";content:\"ba\";content:\"aa\";content:\"aade\";content:\"abde\"}:root .basic,:root .gray,:root .secondary{color:var(--leds-contrast-90pct)}:root .danger,:root .info,:root .success,:root .warning{color:var(--white)}:root .outline.primary,:root .outline.primary:active,:root .outline.primary:focus,:root .outline.primary:hover{border-color:var(--light-600)}:root .outline.primary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--primary)}:root .outline.primary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--primary)}:root .outline.primary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--primary)}:root .outline.secondary{color:var(--leds-contrast-90pct)}:root .outline.secondary,:root .outline.secondary:active,:root .outline.secondary:focus,:root .outline.secondary:hover{border-color:var(--light-600)}:root .outline.secondary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--leds-contrast-90pct)}:root .outline.secondary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .outline.secondary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .outline.basic{color:var(--leds-contrast-90pct)}:root .outline.basic,:root .outline.basic:active,:root .outline.basic:focus,:root .outline.basic:hover{border-color:var(--light-600)}:root .outline.basic:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--leds-contrast-90pct)}:root .outline.basic:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .outline.basic:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .outline.neutral,:root .outline.neutral:active,:root .outline.neutral:focus,:root .outline.neutral:hover{border-color:var(--light-600)}:root .outline.neutral:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--neutral)}:root .outline.neutral:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--neutral)}:root .outline.neutral:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--neutral)}:root .outline.light{border-color:rgba(var(--light-rgb),.5)}:root .outline.light:active,:root .outline.light:focus,:root .outline.light:hover{border-color:var(--light)}:root .outline.light:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--white)}:root .outline.light:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--white)}:root .outline.light:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--white)}:root .outline.dark,:root .outline.dark:active,:root .outline.dark:focus,:root .outline.dark:hover{border-color:var(--light-600)}:root .outline.dark:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--dark)}:root .outline.dark:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--dark)}:root .outline.dark:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--dark)}:root .outline.gray{color:var(--leds-contrast-90pct)}:root .outline.gray,:root .outline.gray:active,:root .outline.gray:focus,:root .outline.gray:hover{border-color:var(--light-600)}:root .outline.gray:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--leds-contrast-90pct)}:root .outline.gray:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .outline.gray:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .outline.info{color:var(--info)}:root .outline.info,:root .outline.info:active,:root .outline.info:focus,:root .outline.info:hover{border-color:var(--light-600)}:root .outline.info:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--info)}:root .outline.info:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--info)}:root .outline.info:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--info)}:root .outline.danger{color:var(--danger)}:root .outline.danger,:root .outline.danger:active,:root .outline.danger:focus,:root .outline.danger:hover{border-color:var(--light-600)}:root .outline.danger:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--danger)}:root .outline.danger:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--danger)}:root .outline.danger:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--danger)}:root .outline.warning{color:var(--warning)}:root .outline.warning,:root .outline.warning:active,:root .outline.warning:focus,:root .outline.warning:hover{border-color:var(--light-600)}:root .outline.warning:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--warning)}:root .outline.warning:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--warning)}:root .outline.warning:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--warning)}:root .outline.success{color:var(--success)}:root .outline.success,:root .outline.success:active,:root .outline.success:focus,:root .outline.success:hover{border-color:var(--light-600)}:root .outline.success:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--success)}:root .outline.success:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--success)}:root .outline.success:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--success)}:root .ghost.primary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--primary)}:root .ghost.primary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--primary)}:root .ghost.primary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--primary)}:root .ghost.secondary,:root .ghost.secondary:hover{color:var(--leds-contrast-90pct)}:root .ghost.secondary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover))}:root .ghost.secondary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .ghost.secondary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus))}:root .ghost.basic,:root .ghost.basic:hover,:root .ghost.secondary:focus{color:var(--leds-contrast-90pct)}:root .ghost.basic:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover))}:root .ghost.basic:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .ghost.basic:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .ghost.neutral:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--neutral)}:root .ghost.neutral:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--neutral)}:root .ghost.neutral:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--neutral)}:root .ghost.light:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--white)}:root .ghost.light:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--white)}:root .ghost.light:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--white)}:root .ghost.dark:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--dark)}:root .ghost.dark:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--dark)}:root .ghost.dark:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--dark)}:root .ghost.gray,:root .ghost.gray:hover{color:var(--leds-contrast-90pct)}:root .ghost.gray:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover))}:root .ghost.gray:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .ghost.gray:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .ghost.info{color:var(--info)}:root .ghost.info:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--info)}:root .ghost.info:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--info)}:root .ghost.info:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--info)}:root .ghost.danger{color:var(--danger)}:root .ghost.danger:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--danger)}:root .ghost.danger:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--danger)}:root .ghost.danger:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--danger)}:root .ghost.warning{color:var(--warning)}:root .ghost.warning:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--warning)}:root .ghost.warning:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--warning)}:root .ghost.warning:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--warning)}:root .ghost.success{color:var(--success)}:root .ghost.success:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--success)}:root .ghost.success:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--success)}:root .ghost.success:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--success)}[class*=\" le-\"],[class^=le-]{position:relative}[class*=\" le-\"]:before,[class^=le-]:before{height:100%;top:0;-webkit-mask-size:20px;mask-size:20px}.le-time_clock_three:before{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E %3Cg id='time_clock_three'%3E %3Cpath id='Shape' fill-rule='evenodd' clip-rule='evenodd' d='M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C21.994 6.47963 17.5204 2.00597 12 2ZM12 20.3333C7.39763 20.3333 3.66667 16.6024 3.66667 12C3.66667 7.39763 7.39763 3.66667 12 3.66667C16.6024 3.66667 20.3333 7.39763 20.3333 12C20.3283 16.6003 16.6003 20.3283 12 20.3333ZM11.5833 5.75C11.5833 5.51988 11.7699 5.33333 12 5.33333C13.8319 5.3347 15.5824 6.09038 16.8397 7.42262C18.0971 8.75487 18.7503 10.5461 18.6458 12.375C18.6337 12.6075 18.4594 12.7992 18.2292 12.8333H12C11.7699 12.8333 11.5833 12.6468 11.5833 12.4167V5.75Z' fill='%235A5A5A'/%3E %3C/g%3E %3C/svg%3E\");-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;display:inline-block;content:\"\";position:absolute;background:currentColor}:host{display:inline-block}:host .logo-timer{border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;display:flex;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;padding:7px 10px;background:var(--secondary-400);overflow:hidden}:host .logo-timer .icon-base{color:var(--basic-900)}:host .logo-timer .icon-base span{display:inline-block;width:20px;height:20px;margin-right:8px;min-width:20px!important}:host .logo-timer .icon-base span:before{width:20px}:host .logo-timer .timer-title{margin-right:10px}:host .logo-timer .timer-title p{margin-top:0!important;margin-bottom:4px!important}:host .logo-timer .timer-base{margin:-7px -10px -7px 0;flex-grow:1;padding:7px 10px;box-sizing:border-box}:host .logo-timer .timer-base .counter{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;flex-direction:row}:host .logo-timer .timer-base .counter ::ng-deep div{padding-right:12px;position:relative;font-size:16px;line-height:16px;font-weight:700}:host .logo-timer .timer-base .counter ::ng-deep div small{display:block;font-size:12px;line-height:10px;font-weight:400}:host .logo-timer .timer-base .counter ::ng-deep div:after{content:\" : \";font-weight:700;position:absolute;font-size:16px;line-height:13px;top:0;right:4px}:host .logo-timer .timer-base .counter ::ng-deep div:last-child{padding-right:0}:host .logo-timer .timer-base .counter ::ng-deep div:last-child:after{content:\"\";padding:0;display:none}"] },] } ]; TimerComponent.ctorParameters = () => [ { type: TimerService } ]; TimerComponent.propDecorators = { cssClasses: [{ type: Input }], isCountdown: [{ type: Input }], timeInMs: [{ type: Input }], title: [{ type: Input }], id: [{ type: Input }], theme: [{ type: Input }], showIcon: [{ type: Input }], showProgressBar: [{ type: Input }], language: [{ type: Input }], autoStart: [{ type: Input }], onTimeCompleted: [{ type: Output }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9nby1zb2Z0d2FyZS90aW1lci9zcmMvbGliL3RpbWVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFPSCxNQUFNLE9BQU8sY0FBYztJQWdEekIsWUFBbUIsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUEzQzdDOztXQUVHO1FBQ00sZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFhckM7O1dBRUc7UUFDTSxVQUFLLEdBQTJELFNBQVMsQ0FBQztRQUNuRjs7V0FFRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDbkM7O1dBRUc7UUFDTSxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUsxQzs7V0FFRztRQUNNLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDbkM7O1dBRUc7UUFDYyxvQkFBZSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBS2xGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQzlDO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMzQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OztZQTNFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLHNxQkFBcUM7Z0JBRXJDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7YUFDdEI7OztZQWhDUSxZQUFZOzs7eUJBcUNsQixLQUFLOzBCQUlMLEtBQUs7dUJBSUwsS0FBSztvQkFJTCxLQUFLO2lCQUlMLEtBQUs7b0JBSUwsS0FBSzt1QkFJTCxLQUFLOzhCQUlMLEtBQUs7dUJBSUwsS0FBSzt3QkFJTCxLQUFLOzhCQUlMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTE9HTyBZQVpJTElNIFNBTkFZxLAgVkUgVMSwQ0FSRVQgQS7Fni4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBTYXZlIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdywgeW91IG1heSBub3QgdXNlLCBjb3B5LCBtb2RpZnksXG4gKiBkaXN0cmlidXRlIG9yIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoaXMgbWF0ZXJpYWwgb3IgYW55IHBhcnRcbiAqIG9mIGl0IHdpdGhvdXQgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBMT0dPIFlBWklMSU0gU0FOQVnEsCBWRSBUxLBDQVJFVCBBLsWeLiBMaW1pdGVkLlxuICogQW55IHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIG11c3QgY29udGFpbiB0aGlzIG5vdGljZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUaW1lclNlcnZpY2UgfSBmcm9tICcuL3RpbWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGFuZyB9IGZyb20gJy4vbGFuZyc7XG5pbXBvcnQgeyBUaW1lUGlwZSB9IGZyb20gJy4vcGlwZS90aW1lLnBpcGUnO1xuXG4vKipcbiAqIFRpbWVyIGxpYnJhcnkgbGV0cyB5b3VyIHVzZXJzIHRvIGtub3cgdGhlaXIgdGltZSBpbiB5b3VyIGFwcC5cbiAqIEFkZCB0aGUgYmVsb3cgY29kZSB0byB5b3VyIGNvZGUgc3RhY2sgYW5kIGdpdmUgaW5pdGlhbGl6ZXIgcGFyYW1ldGVycy5cbiAqXG4gKiA8c3ViPmFwcC5jb21wb25lbnQuaHRtbDwvc3ViPlxuICpcbiAqIGBgYGh0bWxcbiAqIDxsb2dvLXRpbWVyXG4gKiAgW3RpbWVJbk1zXT1cIjEyMzQ1NjdcIlxuICogIFtpZF09XCInbXlMb2dvVGltZXInXCJcbiAqICBbdGl0bGVdPVwiJ0VzdGltYXRlZCBUaW1lJ1wiXG4gKiAgW2Nzc0NsYXNzZXNdPVwiJ215LWxvZ28tdGltZXItdGhlbWUnXCJcbiAqICBbdGhlbWVdPVwiJ3ByaW1hcnknXCJcbiAqICBbaXNDb3VudGRvd25dPVwidHJ1ZVwiXG4gKiAgW3Nob3dJY29uXT1cInRydWVcIlxuICogIFtzaG93UHJvZ3Jlc3NCYXJdPVwidHJ1ZVwiXG4gKiAgW2F1dG9TdGFydF09XCJ0cnVlXCJcbiAqICBbbGFuZ3VhZ2VdPVwie2RheXM6ICdHw7xuJywgaG91cnM6ICdTYWF0JywgbWludXRlczogJ0RrJywgc2Vjb25kczogJ1NuJ31cIlxuICogIChvblRpbWVDb21wbGV0ZWQpPVwic2FtcGxlT25UaW1lRW5kKCRldmVudClcIlxuICogPlxuICogPC9sb2dvLXRpbWVyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xvZ28tdGltZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtUaW1lUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU2V0IGN1c3RvbSBDU1MgQ2xhc3NlcyBmb3IgZGVzaWduIGN1c3RvbWl6YXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBjc3NDbGFzc2VzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQgdHJ1ZSwgdGltZXIgd29ya3MgYXMgY291bnRkb3duIGNsb2NrLCBlbHNlIHRpbWVyIHN0YXJ0cyBmcm9tIHplcm8uXG4gICAqL1xuICBASW5wdXQoKSBpc0NvdW50ZG93bjogYm9vbGVhbiA9IHRydWU7XG4gIC8qKlxuICAgKiBUaW1lciBzdGFydHMgb3IgZW5kcyB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgKi9cbiAgQElucHV0KCkgdGltZUluTXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGJlZm9yZSB0aGUgdGltZXIuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgdGltZXIgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gY29tcGxldGVkLlxuICAgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBMb2dvIFRoZW1lIGJhc2VkIHRoZW1lcyBvZiB0aGUgdGltZXIuXG4gICAqL1xuICBASW5wdXQoKSB0aGVtZTogJ3ByaW1hcnknIHwgJ3doaXRlJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInID0gJ3ByaW1hcnknO1xuICAvKipcbiAgICogU2hvdyBpY29uIG9yIG5vdCBiZWZvcmUgdGhlIHRpbWVyIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBzaG93SWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogU2hvdyBwcm9ncmVzcyBiYXIgb3Igbm90IGFmdGVyIHRoZSB0aXRsZSB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgc2hvd1Byb2dyZXNzQmFyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBpbnB1dHMgZm9yIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLiBNdXN0IGJlIGZvcm1hdHRlZCBhcyBsYW5nLnRzIGZpbGUuXG4gICAqL1xuICBASW5wdXQoKSBsYW5ndWFnZTogTGFuZztcbiAgLyoqXG4gICAqIEF1dG8gc3RhcnQgdGltZXIgb25Jbml0IG9yIHRyaWdnZXIgaXQgYnkgeW91ciBvd24gZnVuY3Rpb24gb3B0aW9ucy4gSWYgc2V0IHRydWUsIHRpbWVyIHdpbGwgc3RhcnQgb24gaW5pdCBvZiB0aGUgbGlicmFyeSBlbHNlIHlvdSBuZWVkIHRvIHN0YXJ0IGJ5IHlvdXIgb3duIHRyaWdnZXIgZnVuY3Rpb24uIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIGF1dG9TdGFydDogYm9vbGVhbiA9IHRydWU7XG4gIC8qKlxuICAgKiBPdXRwdXQgb2YgdGhlIGNvbXBsZXRlZCB0aW1lci4gSXQgcmV0dXJucyB0aGUgaWQgdGhhdCBzZXR0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIG9uVGltZUNvbXBsZXRlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcml2YXRlIHdhdGNoVGltZXI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGltZXJTZXJ2aWNlOiBUaW1lclNlcnZpY2UpIHtcbiAgICB0aGlzLndhdGNoVGltZXIgPSB0aGlzLnRpbWVyU2VydmljZS5pc0VuZGVkLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgIHggPyB0aGlzLm9uVGltZUNvbXBsZXRlZC5lbWl0KHRoaXMuaWQpIDogJyc7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0NvdW50ZG93bikge1xuICAgICAgdGhpcy50aW1lclNlcnZpY2UudGltZXJDb3VudCA9IHRoaXMudGltZUluTXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGltZXJTZXJ2aWNlLnRpbWVyQ291bnQgPSAwO1xuICAgICAgdGhpcy50aW1lclNlcnZpY2UuZW5kVGltZSA9IHRoaXMudGltZUluTXM7XG4gICAgfVxuICAgIHRoaXMudGltZXJTZXJ2aWNlLmF1dG9TdGFydCA9IHRoaXMuYXV0b1N0YXJ0O1xuICAgIHRoaXMudGltZXJTZXJ2aWNlLmxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZTtcbiAgICB0aGlzLnRpbWVyU2VydmljZS5jb3VudGRvd24gPSB0aGlzLmlzQ291bnRkb3duO1xuICAgIHRoaXMudGltZXJTZXJ2aWNlLnByZXBhcmVUaW1lcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy53YXRjaFRpbWVyLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==