@norwegian/core-components 6.43.1 → 6.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -97,11 +97,11 @@ export class JourneyComponent extends NasComponentBase {
97
97
  return this.datePipe.transform(this.dateService.date(date), format, this.timeZone, this.locale);
98
98
  }
99
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: JourneyComponent, deps: [{ token: i1.DatePipe }, { token: i2.DateHelper }], target: i0.ɵɵFactoryTarget.Component }); }
100
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: JourneyComponent, selector: "nas-journey", inputs: { journeyModel: "journeyModel", dateFormat: "dateFormat", timeFormat: "timeFormat", arrivalLabel: "arrivalLabel", departureLabel: "departureLabel", arrivalEstimatedLabel: "arrivalEstimatedLabel", departureEstimatedLabel: "departureEstimatedLabel", locale: "locale", timeZone: "timeZone" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyModel\">\n <span [nasClass]=\"getLineClass()\"></span>\n\n <div [nasClass]=\"getClass('body')\">\n <div [nasClass]=\"getClass('flight-details', ['departure'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.departure?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.departure?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.departure)\">\n {{ departureLabel }}\n <span\n >{{ currentJourney?.departureDate }}\n {{ currentJourney?.departureTime }}</span\n >\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ departureEstimatedLabel }}\n {{ currentJourney?.estimatedDepartureDate }}\n {{ currentJourney?.estimatedDepartureTime }}\n </div>\n </div>\n\n <div [nasClass]=\"getClass('journey-details')\">\n <ng-content></ng-content>\n </div>\n\n <div [nasClass]=\"getClass('flight-details', ['arrival'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.arrival?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.arrival?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.arrival)\">\n {{ arrivalLabel }}\n <span\n >{{ currentJourney?.arrivalDate }}\n {{ currentJourney?.arrivalTime }}</span\n >\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ arrivalEstimatedLabel }} {{ currentJourney?.estimatedArrivalDate }}\n {{ currentJourney?.estimatedArrivalTime }}\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey{position:relative}.nas-journey__line{position:absolute;top:18px;bottom:15px;left:4px;width:9px;background-image:linear-gradient(to bottom,#6f6f6f 9px,transparent 9px);background-position:center;background-repeat:repeat-y;background-size:2px 18px}.nas-journey__line--delayed{bottom:33px}.nas-journey__line:before,.nas-journey__line:after{content:\"\";position:absolute;left:1px;width:8px;height:8px;border-radius:50%}.nas-journey__line:before{top:-7px;background-color:#15273f}.nas-journey__line:after{bottom:-4px;background-color:#e5212d}.nas-journey__body{padding-left:36px}.nas-journey__body .nas-journey__flight-details .nas-journey--date{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--place{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px}.nas-journey__body .nas-journey__flight-details .nas-journey--place .nas-journey__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px;top:-.5em;letter-spacing:0}.nas-journey__body .nas-journey__flight-details .nas-journey--time{line-height:24px!important;font-size:16px;line-height:26px;color:#15273f;font-weight:400}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time{font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time span{text-decoration:line-through}.nas-journey__body .nas-journey__flight-details .nas-journey--estimated-time{font-size:14px;line-height:20px;color:#e5212d}.nas-journey__body .nas-journey__flight-details:first-child{padding-bottom:8px}.nas-journey__body .nas-journey__flight-details:last-child{padding-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }] }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: JourneyComponent, selector: "nas-journey", inputs: { journeyModel: "journeyModel", dateFormat: "dateFormat", timeFormat: "timeFormat", arrivalLabel: "arrivalLabel", departureLabel: "departureLabel", locale: "locale", timeZone: "timeZone" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyModel\">\n <span [nasClass]=\"getLineClass()\"></span>\n\n <div [nasClass]=\"getClass('body')\">\n <div [nasClass]=\"getClass('flight-details', ['departure'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.departure?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.departure?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.departure)\">\n <span>{{ departureLabel }} {{ currentJourney?.departureDate }} {{ currentJourney?.departureTime }}</span>\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ departureLabel }}\n {{ currentJourney?.estimatedDepartureDate }}\n {{ currentJourney?.estimatedDepartureTime }}\n </div>\n </div>\n\n <div [nasClass]=\"getClass('journey-details')\">\n <ng-content></ng-content>\n </div>\n\n <div [nasClass]=\"getClass('flight-details', ['arrival'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.arrival?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.arrival?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.arrival)\">\n <span>{{ arrivalLabel }} {{ currentJourney?.arrivalDate }} {{ currentJourney?.arrivalTime }}</span>\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.arrival?.estimatedTime ||\n journeyModel?.arrival?.estimatedDate\n \"\n >\n {{ arrivalLabel }} {{ currentJourney?.estimatedArrivalDate }}\n {{ currentJourney?.estimatedArrivalTime }}\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey{position:relative}.nas-journey__line{position:absolute;top:18px;bottom:15px;left:4px;width:9px;background-image:linear-gradient(to bottom,#6f6f6f 9px,transparent 9px);background-position:center;background-repeat:repeat-y;background-size:2px 18px}.nas-journey__line--delayed{bottom:33px}.nas-journey__line:before,.nas-journey__line:after{content:\"\";position:absolute;left:.5px;width:8px;height:8px;border-radius:50%}.nas-journey__line:before{top:-7px;background-color:#15273f}.nas-journey__line:after{bottom:-4px;background-color:#e5212d}.nas-journey__body{padding-left:36px}.nas-journey__body .nas-journey__flight-details .nas-journey--date{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--place{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px}.nas-journey__body .nas-journey__flight-details .nas-journey--place .nas-journey__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px;top:-.5em;letter-spacing:0}.nas-journey__body .nas-journey__flight-details .nas-journey--time{line-height:24px!important;font-size:16px;line-height:26px;color:#15273f;font-weight:400}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time{color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time span{text-decoration:line-through}.nas-journey__body .nas-journey__flight-details .nas-journey--estimated-time{color:#e5212d}.nas-journey__body .nas-journey__flight-details:first-child{padding-bottom:8px}.nas-journey__body .nas-journey__flight-details:last-child{padding-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }] }); }
101
101
  }
102
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: JourneyComponent, decorators: [{
103
103
  type: Component,
104
- args: [{ selector: 'nas-journey', template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyModel\">\n <span [nasClass]=\"getLineClass()\"></span>\n\n <div [nasClass]=\"getClass('body')\">\n <div [nasClass]=\"getClass('flight-details', ['departure'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.departure?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.departure?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.departure)\">\n {{ departureLabel }}\n <span\n >{{ currentJourney?.departureDate }}\n {{ currentJourney?.departureTime }}</span\n >\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ departureEstimatedLabel }}\n {{ currentJourney?.estimatedDepartureDate }}\n {{ currentJourney?.estimatedDepartureTime }}\n </div>\n </div>\n\n <div [nasClass]=\"getClass('journey-details')\">\n <ng-content></ng-content>\n </div>\n\n <div [nasClass]=\"getClass('flight-details', ['arrival'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.arrival?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.arrival?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.arrival)\">\n {{ arrivalLabel }}\n <span\n >{{ currentJourney?.arrivalDate }}\n {{ currentJourney?.arrivalTime }}</span\n >\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ arrivalEstimatedLabel }} {{ currentJourney?.estimatedArrivalDate }}\n {{ currentJourney?.estimatedArrivalTime }}\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey{position:relative}.nas-journey__line{position:absolute;top:18px;bottom:15px;left:4px;width:9px;background-image:linear-gradient(to bottom,#6f6f6f 9px,transparent 9px);background-position:center;background-repeat:repeat-y;background-size:2px 18px}.nas-journey__line--delayed{bottom:33px}.nas-journey__line:before,.nas-journey__line:after{content:\"\";position:absolute;left:1px;width:8px;height:8px;border-radius:50%}.nas-journey__line:before{top:-7px;background-color:#15273f}.nas-journey__line:after{bottom:-4px;background-color:#e5212d}.nas-journey__body{padding-left:36px}.nas-journey__body .nas-journey__flight-details .nas-journey--date{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--place{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px}.nas-journey__body .nas-journey__flight-details .nas-journey--place .nas-journey__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px;top:-.5em;letter-spacing:0}.nas-journey__body .nas-journey__flight-details .nas-journey--time{line-height:24px!important;font-size:16px;line-height:26px;color:#15273f;font-weight:400}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time{font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time span{text-decoration:line-through}.nas-journey__body .nas-journey__flight-details .nas-journey--estimated-time{font-size:14px;line-height:20px;color:#e5212d}.nas-journey__body .nas-journey__flight-details:first-child{padding-bottom:8px}.nas-journey__body .nas-journey__flight-details:last-child{padding-top:8px}\n"] }]
104
+ args: [{ selector: 'nas-journey', template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyModel\">\n <span [nasClass]=\"getLineClass()\"></span>\n\n <div [nasClass]=\"getClass('body')\">\n <div [nasClass]=\"getClass('flight-details', ['departure'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.departure?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.departure?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.departure)\">\n <span>{{ departureLabel }} {{ currentJourney?.departureDate }} {{ currentJourney?.departureTime }}</span>\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ departureLabel }}\n {{ currentJourney?.estimatedDepartureDate }}\n {{ currentJourney?.estimatedDepartureTime }}\n </div>\n </div>\n\n <div [nasClass]=\"getClass('journey-details')\">\n <ng-content></ng-content>\n </div>\n\n <div [nasClass]=\"getClass('flight-details', ['arrival'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.arrival?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.arrival?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.arrival)\">\n <span>{{ arrivalLabel }} {{ currentJourney?.arrivalDate }} {{ currentJourney?.arrivalTime }}</span>\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.arrival?.estimatedTime ||\n journeyModel?.arrival?.estimatedDate\n \"\n >\n {{ arrivalLabel }} {{ currentJourney?.estimatedArrivalDate }}\n {{ currentJourney?.estimatedArrivalTime }}\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey{position:relative}.nas-journey__line{position:absolute;top:18px;bottom:15px;left:4px;width:9px;background-image:linear-gradient(to bottom,#6f6f6f 9px,transparent 9px);background-position:center;background-repeat:repeat-y;background-size:2px 18px}.nas-journey__line--delayed{bottom:33px}.nas-journey__line:before,.nas-journey__line:after{content:\"\";position:absolute;left:.5px;width:8px;height:8px;border-radius:50%}.nas-journey__line:before{top:-7px;background-color:#15273f}.nas-journey__line:after{bottom:-4px;background-color:#e5212d}.nas-journey__body{padding-left:36px}.nas-journey__body .nas-journey__flight-details .nas-journey--date{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--place{line-height:24px!important;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px}.nas-journey__body .nas-journey__flight-details .nas-journey--place .nas-journey__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:26px;top:-.5em;letter-spacing:0}.nas-journey__body .nas-journey__flight-details .nas-journey--time{line-height:24px!important;font-size:16px;line-height:26px;color:#15273f;font-weight:400}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time{color:#6f6f6f}.nas-journey__body .nas-journey__flight-details .nas-journey--crossed-time span{text-decoration:line-through}.nas-journey__body .nas-journey__flight-details .nas-journey--estimated-time{color:#e5212d}.nas-journey__body .nas-journey__flight-details:first-child{padding-bottom:8px}.nas-journey__body .nas-journey__flight-details:last-child{padding-top:8px}\n"] }]
105
105
  }], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i2.DateHelper }]; }, propDecorators: { journeyModel: [{
106
106
  type: Input
107
107
  }], dateFormat: [{
@@ -112,13 +112,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
112
112
  type: Input
113
113
  }], departureLabel: [{
114
114
  type: Input
115
- }], arrivalEstimatedLabel: [{
116
- type: Input
117
- }], departureEstimatedLabel: [{
118
- type: Input
119
115
  }], locale: [{
120
116
  type: Input
121
117
  }], timeZone: [{
122
118
  type: Input
123
119
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5leS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXkvam91cm5leS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXkvam91cm5leS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBUXRFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFnR3BELFlBQW9CLFFBQWtCLEVBQVUsV0FBdUI7UUFDckUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBREgsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBN0V2RTs7Ozs7OztXQU9HO1FBQ00sZUFBVSxHQUFHLGNBQWMsQ0FBQztRQUVyQzs7Ozs7OztXQU9HO1FBQ00sZUFBVSxHQUFHLE9BQU8sQ0FBQztRQXNDOUI7Ozs7Ozs7V0FPRztRQUNNLFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFMUI7Ozs7Ozs7V0FPRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFLMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFlBQVksQ0FBQyxhQUFpQztRQUNuRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELElBQUksYUFBYSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMs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Z0JBVUcsTUFBTTtzQkFBZCxLQUFLO2dCQVVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IEpvdXJuZXlNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2pvdXJuZXkubW9kZWwnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBKb3VybmV5RmxpZ2h0TW9kZWwgfSBmcm9tICcuL21vZGVscy9qb3VybmV5LWZsaWdodC5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVdGNEYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvdXRjLWRhdGUubW9kZWwnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIGpvdXJuZXkgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtam91cm5leScsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb3VybmV5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam91cm5leS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEpvdXJuZXlDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBjdXJyZW50Sm91cm5leToge1xuICAgIGRlcGFydHVyZVRpbWU6IHN0cmluZzsgYXJyaXZhbFRpbWU6IHN0cmluZztcbiAgICBkZXBhcnR1cmVEYXRlOiBzdHJpbmc7IGFycml2YWxEYXRlOiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkQXJyaXZhbFRpbWU/OiBzdHJpbmc7IGVzdGltYXRlZERlcGFydHVyZVRpbWU/OiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkQXJyaXZhbERhdGU/OiBzdHJpbmc7IGVzdGltYXRlZERlcGFydHVyZURhdGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSByZWNvcmQgY29udGFpbmluZyBKb3VybmV5IGRldGFpbHMuXG4gICAqIEByZXF1aXJlZFxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW2pvdXJuZXlNb2RlbF09XCJqb3VybmV5TW9kZWxcIj48L25hcy1qb3VybmV5PlxuICAgKi9cbiAgQElucHV0KCkgam91cm5leU1vZGVsOiBKb3VybmV5TW9kZWw7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIGRhdGUgZGlzcGxheSBmb3JtYXQsIGlmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBmb3JtYXR0aW5nIG9uIGRhdGUgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGkuZSAnZGQgTU1NIHl5eXknLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBkaXNwbGF5aW5nIGRhdGUgbGlrZSAnMjEsIEZlYiAyMDE5Jy5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1qb3VybmV5IFtkYXRlRm9ybWF0XT1cIidkZCwgTU1NIHl5eXknXCI+PC9uYXMtam91cm5leT5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQgPSAnZGQsIE1NTSB5eXl5JztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGltZSBkaXNwbGF5IGZvcm1hdCwgaWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0IGZvcm1hdHRpbmcgb24gZGF0ZSB3aWxsIGJlIGFwcGxpZWRcbiAgICogaS5lICdISDptbScgLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBkaXNwbGF5aW5nIHRpbWUgbGlrZSAnMDk6MjMnLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW3RpbWVGb3JtYXRdPVwiJ0hIOm1tJ1wiPjwvbmFzLWpvdXJuZXk+XG4gICAqL1xuICBASW5wdXQoKSB0aW1lRm9ybWF0ID0gJ0hIOm1tJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyBhcnJpdmFsIGxhYmVsLCBpdCB3aWxsIGJlIGRpc3BsYXllZCBiZWZvcmUgdGhlIGFycml2YWwgdGltZS5cbiAqIEBleGFtcGxlXG4gKiA8bmFzLWpvdXJuZXkgW2Fycml2YWxMYWJlbF09XCInQXJyaXZhbCdcIj48L25hcy1qb3VybmV5PlxuICovXG4gIEBJbnB1dCgpIGFycml2YWxMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyBkZXBhcnR1cmUgbGFiZWwsIGl0IHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgZGVwYXJ0dXJlIHRpbWUuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leSBbZGVwYXJ0dXJlTGFiZWxdPVwiJ0RlcGFydHVyZSdcIj48L25hcy1qb3VybmV5PlxuICAgKi9cbiAgQElucHV0KCkgZGVwYXJ0dXJlTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgZGVsYXllZCBhcnJpdmFsIGxhYmVsLCBpdCB3aWxsIGJlIGRpc3BsYXllZCBiZWZvcmUgdGhlIGRlbGF5ZWQgYXJyaXZhbCB0aW1lLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW2Fycml2YWxFc3RpbWF0ZWRMYWJlbF09XCInTmV3IHRpbWUnXCI+PC9uYXMtam91cm5leT5cbiAgICovXG4gIEBJbnB1dCgpIGFycml2YWxFc3RpbWF0ZWRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyBkZWxheWVkIGRlcGFydHVyZSBsYWJlbCwgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBkZWxheWVkIGRlcGFydHVyZSB0aW1lLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW2RlcGFydHVyZUVzdGltYXRlZExhYmVsXT1cIidOZXcgdGltZSdcIj48L25hcy1qb3VybmV5PlxuICAgKi9cbiAgQElucHV0KCkgZGVwYXJ0dXJlRXN0aW1hdGVkTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBMT0NBTEVfSUQsIHdoaWNoIGlzIGVuLVVTIGJ5IGRlZmF1bHQuXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhhdCByZWdpc3RlckxvY2FsZURhdGEgaXMgY2FsbGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgbG9jYWxlLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW2xvY2FsZV09XCInZXMnXCI+PC9uYXMtam91cm5leT5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbi1VUyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVXNlciBjYW4gaW5wdXQgdGhlIHRpbWV6b25lIHRvIGxvY2FsaXplIHRoZSBkYXRlLlxuICAgKiBEZWZhdWx0IGlzIHNldCB0byBVVEMgYW5kIGl0IHdpbGwgYnkgZGVmYXVsdCBzaG93IHRoZSBkYXRlIGV4YWN0bHkgd2hhdCBpcyBwYXNzZWQgdG8gaXQuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leSBbdGltZVpvbmVdPVwiJ1VUQydcIj48L25hcy1qb3VybmV5PlxuICAgKi9cbiAgQElucHV0KCkgdGltZVpvbmUgPSAnVVRDJztcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLCBwcml2YXRlIGRhdGVTZXJ2aWNlOiBEYXRlSGVscGVyKSB7XG4gICAgc3VwZXIoJ25hcy1qb3VybmV5Jyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zZXREaXNwbGF5RGF0ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lQ2xhc3Moam91cm5leUZsaWdodDogSm91cm5leUZsaWdodE1vZGVsKTogQ2xhc3NNb2RlbCB7XG4gICAgaWYgKCFqb3VybmV5RmxpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGpvdXJuZXlGbGlnaHQuZXN0aW1hdGVkVGltZSB8fCBqb3VybmV5RmxpZ2h0LmVzdGltYXRlZERhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCcnLCBbJ2Nyb3NzZWQtdGltZSddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJycsIFsndGltZSddKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGluZUNsYXNzKCk6IENsYXNzTW9kZWwge1xuICAgIGlmICghdGhpcy5qb3VybmV5TW9kZWwgfHwgIXRoaXMuam91cm5leU1vZGVsLmFycml2YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5qb3VybmV5TW9kZWwuYXJyaXZhbC5lc3RpbWF0ZWRUaW1lIHx8IHRoaXMuam91cm5leU1vZGVsLmFycml2YWwuZXN0aW1hdGVkRGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2xpbmUnLCBbJ2RlbGF5ZWQnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCdsaW5lJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNwbGF5RGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuam91cm5leU1vZGVsKSB7XG4gICAgICB0aGlzLmN1cnJlbnRKb3VybmV5ID0ge1xuICAgICAgICBkZXBhcnR1cmVUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuZGVwYXJ0dXJlLnRpbWUsIHRoaXMudGltZUZvcm1hdCksXG4gICAgICAgIGFycml2YWxUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuYXJyaXZhbC50aW1lLCB0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgICBkZXBhcnR1cmVEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuZGVwYXJ0dXJlLmRhdGUsIHRoaXMuZGF0ZUZvcm1hdCksXG4gICAgICAgIGFycml2YWxEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuYXJyaXZhbC5kYXRlLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWREZXBhcnR1cmVEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuZGVwYXJ0dXJlLmVzdGltYXRlZERhdGUsIHRoaXMuZGF0ZUZvcm1hdCksXG4gICAgICAgIGVzdGltYXRlZEFycml2YWxEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuYXJyaXZhbC5lc3RpbWF0ZWREYXRlLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWREZXBhcnR1cmVUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuZGVwYXJ0dXJlLmVzdGltYXRlZFRpbWUsIHRoaXMudGltZUZvcm1hdCksXG4gICAgICAgIGVzdGltYXRlZEFycml2YWxUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5TW9kZWwuYXJyaXZhbC5lc3RpbWF0ZWRUaW1lLCB0aGlzLnRpbWVGb3JtYXQpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtRGF0ZShkYXRlOiBVdGNEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZShkYXRlKSwgZm9ybWF0LCB0aGlzLnRpbWVab25lLCB0aGlzLmxvY2FsZSk7XG4gIH1cbn1cbiIsIjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKClcIiAqbmdJZj1cImpvdXJuZXlNb2RlbFwiPlxuICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0TGluZUNsYXNzKClcIj48L3NwYW4+XG5cbiAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2JvZHknKVwiPlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdmbGlnaHQtZGV0YWlscycsIFsnZGVwYXJ0dXJlJ10pXCI+XG4gICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnJywgWydwbGFjZSddKVwiPlxuICAgICAgICB7eyBqb3VybmV5TW9kZWw/LmRlcGFydHVyZT8uYWlycG9ydE5hbWUgfX1cbiAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdhaXJwb3J0LWNvZGUnKVwiPnt7XG4gICAgICAgICAgam91cm5leU1vZGVsPy5kZXBhcnR1cmU/LmFpcnBvcnRDb2RlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRUaW1lQ2xhc3Moam91cm5leU1vZGVsPy5kZXBhcnR1cmUpXCI+XG4gICAgICAgIHt7IGRlcGFydHVyZUxhYmVsIH19XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgPnt7IGN1cnJlbnRKb3VybmV5Py5kZXBhcnR1cmVEYXRlIH19XG4gICAgICAgICAge3sgY3VycmVudEpvdXJuZXk/LmRlcGFydHVyZVRpbWUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnJywgWydlc3RpbWF0ZWQtdGltZSddKVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgam91cm5leU1vZGVsPy5kZXBhcnR1cmU/LmVzdGltYXRlZFRpbWUgfHxcbiAgICAgICAgICBqb3VybmV5TW9kZWw/LmRlcGFydHVyZT8uZXN0aW1hdGVkRGF0ZVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyBkZXBhcnR1cmVFc3RpbWF0ZWRMYWJlbCB9fVxuICAgICAgICB7eyBjdXJyZW50Sm91cm5leT8uZXN0aW1hdGVkRGVwYXJ0dXJlRGF0ZSB9fVxuICAgICAgICB7eyBjdXJyZW50Sm91cm5leT8uZXN0aW1hdGVkRGVwYXJ0dXJlVGltZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnam91cm5leS1kZXRhaWxzJylcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdmbGlnaHQtZGV0YWlscycsIFsnYXJyaXZhbCddKVwiPlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsncGxhY2UnXSlcIj5cbiAgICAgICAge3sgam91cm5leU1vZGVsPy5hcnJpdmFsPy5haXJwb3J0TmFtZSB9fVxuICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2FpcnBvcnQtY29kZScpXCI+e3tcbiAgICAgICAgICBqb3VybmV5TW9kZWw/LmFycml2YWw/LmFpcnBvcnRDb2RlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRUaW1lQ2xhc3Moam91cm5leU1vZGVsPy5hcnJpdmFsKVwiPlxuICAgICAgICB7eyBhcnJpdmFsTGFiZWwgfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA+e3sgY3VycmVudEpvdXJuZXk/LmFycml2YWxEYXRlIH19XG4gICAgICAgICAge3sgY3VycmVudEpvdXJuZXk/LmFycml2YWxUaW1lIH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsnZXN0aW1hdGVkLXRpbWUnXSlcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGpvdXJuZXlNb2RlbD8uZGVwYXJ0dXJlPy5lc3RpbWF0ZWRUaW1lIHx8XG4gICAgICAgICAgam91cm5leU1vZGVsPy5kZXBhcnR1cmU/LmVzdGltYXRlZERhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgYXJyaXZhbEVzdGltYXRlZExhYmVsIH19IHt7IGN1cnJlbnRKb3VybmV5Py5lc3RpbWF0ZWRBcnJpdmFsRGF0ZSB9fVxuICAgICAgICB7eyBjdXJyZW50Sm91cm5leT8uZXN0aW1hdGVkQXJyaXZhbFRpbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5leS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXkvam91cm5leS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXkvam91cm5leS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBUXRFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUE4RXBELFlBQW9CLFFBQWtCLEVBQVUsV0FBdUI7UUFDckUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBREgsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBM0R2RTs7Ozs7OztXQU9HO1FBQ00sZUFBVSxHQUFHLGNBQWMsQ0FBQztRQUVyQzs7Ozs7OztXQU9HO1FBQ00sZUFBVSxHQUFHLE9BQU8sQ0FBQztRQW9COUI7Ozs7Ozs7V0FPRztRQUNNLFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFMUI7Ozs7Ozs7V0FPRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFLMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFlBQVksQ0FBQyxhQUFpQztRQUNuRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELElBQUksYUFBYSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMs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cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBKb3VybmV5TW9kZWwgfSBmcm9tICcuL21vZGVscy9qb3VybmV5Lm1vZGVsJztcbmltcG9ydCB7IENsYXNzTW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9jbGFzcy5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9kYXRlL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSm91cm5leUZsaWdodE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvam91cm5leS1mbGlnaHQubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBqb3VybmV5IENvbXBvbmVudCB8IEZ1bmN0aW9uYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWpvdXJuZXknLFxuICB0ZW1wbGF0ZVVybDogJy4vam91cm5leS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2pvdXJuZXkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBKb3VybmV5Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgY3VycmVudEpvdXJuZXk6IHtcbiAgICBkZXBhcnR1cmVUaW1lOiBzdHJpbmc7IGFycml2YWxUaW1lOiBzdHJpbmc7XG4gICAgZGVwYXJ0dXJlRGF0ZTogc3RyaW5nOyBhcnJpdmFsRGF0ZTogc3RyaW5nO1xuICAgIGVzdGltYXRlZEFycml2YWxUaW1lPzogc3RyaW5nOyBlc3RpbWF0ZWREZXBhcnR1cmVUaW1lPzogc3RyaW5nO1xuICAgIGVzdGltYXRlZEFycml2YWxEYXRlPzogc3RyaW5nOyBlc3RpbWF0ZWREZXBhcnR1cmVEYXRlPzogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcmVjb3JkIGNvbnRhaW5pbmcgSm91cm5leSBkZXRhaWxzLlxuICAgKiBAcmVxdWlyZWRcbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1qb3VybmV5IFtqb3VybmV5TW9kZWxdPVwiam91cm5leU1vZGVsXCI+PC9uYXMtam91cm5leT5cbiAgICovXG4gIEBJbnB1dCgpIGpvdXJuZXlNb2RlbDogSm91cm5leU1vZGVsO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyBkYXRlIGRpc3BsYXkgZm9ybWF0LCBpZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgZm9ybWF0dGluZyBvbiBkYXRlIHdpbGwgYmUgYXBwbGllZFxuICAgKiBpLmUgJ2RkIE1NTSB5eXl5Jywgd2hpY2ggd2lsbCByZXN1bHQgaW4gZGlzcGxheWluZyBkYXRlIGxpa2UgJzIxLCBGZWIgMjAxOScuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leSBbZGF0ZUZvcm1hdF09XCInZGQsIE1NTSB5eXl5J1wiPjwvbmFzLWpvdXJuZXk+XG4gICAqL1xuICBASW5wdXQoKSBkYXRlRm9ybWF0ID0gJ2RkLCBNTU0geXl5eSc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRpbWUgZGlzcGxheSBmb3JtYXQsIGlmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBmb3JtYXR0aW5nIG9uIGRhdGUgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGkuZSAnSEg6bW0nICwgd2hpY2ggd2lsbCByZXN1bHQgaW4gZGlzcGxheWluZyB0aW1lIGxpa2UgJzA5OjIzJy5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1qb3VybmV5IFt0aW1lRm9ybWF0XT1cIidISDptbSdcIj48L25hcy1qb3VybmV5PlxuICAgKi9cbiAgQElucHV0KCkgdGltZUZvcm1hdCA9ICdISDptbSc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICogQGRlc2NyaXB0aW9uXG4gKiBBIHN0cmluZyByZXByZXNlbnRpbmcgYXJyaXZhbCBsYWJlbCwgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBhcnJpdmFsIHRpbWUuXG4gKiBAZXhhbXBsZVxuICogPG5hcy1qb3VybmV5IFthcnJpdmFsTGFiZWxdPVwiJ0Fycml2YWwnXCI+PC9uYXMtam91cm5leT5cbiAqL1xuICBASW5wdXQoKSBhcnJpdmFsTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgZGVwYXJ0dXJlIGxhYmVsLCBpdCB3aWxsIGJlIGRpc3BsYXllZCBiZWZvcmUgdGhlIGRlcGFydHVyZSB0aW1lLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW2RlcGFydHVyZUxhYmVsXT1cIidEZXBhcnR1cmUnXCI+PC9uYXMtam91cm5leT5cbiAgICovXG4gIEBJbnB1dCgpIGRlcGFydHVyZUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgTE9DQUxFX0lELCB3aGljaCBpcyBlbi1VUyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgcmVnaXN0ZXJMb2NhbGVEYXRhIGlzIGNhbGxlZCB3aXRoIHRoZSByZXNwZWN0aXZlIGxvY2FsZS5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1qb3VybmV5IFtsb2NhbGVdPVwiJ2VzJ1wiPjwvbmFzLWpvdXJuZXk+XG4gICAqL1xuICBASW5wdXQoKSBsb2NhbGUgPSAnZW4tVVMnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFVzZXIgY2FuIGlucHV0IHRoZSB0aW1lem9uZSB0byBsb2NhbGl6ZSB0aGUgZGF0ZS5cbiAgICogRGVmYXVsdCBpcyBzZXQgdG8gVVRDIGFuZCBpdCB3aWxsIGJ5IGRlZmF1bHQgc2hvdyB0aGUgZGF0ZSBleGFjdGx5IHdoYXQgaXMgcGFzc2VkIHRvIGl0LlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXkgW3RpbWVab25lXT1cIidVVEMnXCI+PC9uYXMtam91cm5leT5cbiAgICovXG4gIEBJbnB1dCgpIHRpbWVab25lID0gJ1VUQyc7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZUhlbHBlcikge1xuICAgIHN1cGVyKCduYXMtam91cm5leScpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGlzcGxheURhdGVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZUNsYXNzKGpvdXJuZXlGbGlnaHQ6IEpvdXJuZXlGbGlnaHRNb2RlbCk6IENsYXNzTW9kZWwge1xuICAgIGlmICgham91cm5leUZsaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChqb3VybmV5RmxpZ2h0LmVzdGltYXRlZFRpbWUgfHwgam91cm5leUZsaWdodC5lc3RpbWF0ZWREYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygnJywgWydjcm9zc2VkLXRpbWUnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCcnLCBbJ3RpbWUnXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldExpbmVDbGFzcygpOiBDbGFzc01vZGVsIHtcbiAgICBpZiAoIXRoaXMuam91cm5leU1vZGVsIHx8ICF0aGlzLmpvdXJuZXlNb2RlbC5hcnJpdmFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuam91cm5leU1vZGVsLmFycml2YWwuZXN0aW1hdGVkVGltZSB8fCB0aGlzLmpvdXJuZXlNb2RlbC5hcnJpdmFsLmVzdGltYXRlZERhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCdsaW5lJywgWydkZWxheWVkJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygnbGluZScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzcGxheURhdGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmpvdXJuZXlNb2RlbCkge1xuICAgICAgdGhpcy5jdXJyZW50Sm91cm5leSA9IHtcbiAgICAgICAgZGVwYXJ0dXJlVGltZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmRlcGFydHVyZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgICBhcnJpdmFsVGltZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmFycml2YWwudGltZSwgdGhpcy50aW1lRm9ybWF0KSxcbiAgICAgICAgZGVwYXJ0dXJlRGF0ZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmRlcGFydHVyZS5kYXRlLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBhcnJpdmFsRGF0ZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmFycml2YWwuZGF0ZSwgdGhpcy5kYXRlRm9ybWF0KSxcbiAgICAgICAgZXN0aW1hdGVkRGVwYXJ0dXJlRGF0ZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmRlcGFydHVyZS5lc3RpbWF0ZWREYXRlLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWRBcnJpdmFsRGF0ZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmFycml2YWwuZXN0aW1hdGVkRGF0ZSwgdGhpcy5kYXRlRm9ybWF0KSxcbiAgICAgICAgZXN0aW1hdGVkRGVwYXJ0dXJlVGltZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmRlcGFydHVyZS5lc3RpbWF0ZWRUaW1lLCB0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWRBcnJpdmFsVGltZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leU1vZGVsLmFycml2YWwuZXN0aW1hdGVkVGltZSwgdGhpcy50aW1lRm9ybWF0KVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybURhdGUoZGF0ZTogVXRjRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUoZGF0ZSksIGZvcm1hdCwgdGhpcy50aW1lWm9uZSwgdGhpcy5sb2NhbGUpO1xuICB9XG59XG4iLCI8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygpXCIgKm5nSWY9XCJqb3VybmV5TW9kZWxcIj5cbiAgPHNwYW4gW25hc0NsYXNzXT1cImdldExpbmVDbGFzcygpXCI+PC9zcGFuPlxuXG4gIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdib2R5JylcIj5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnZmxpZ2h0LWRldGFpbHMnLCBbJ2RlcGFydHVyZSddKVwiPlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsncGxhY2UnXSlcIj5cbiAgICAgICAge3sgam91cm5leU1vZGVsPy5kZXBhcnR1cmU/LmFpcnBvcnROYW1lIH19XG4gICAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYWlycG9ydC1jb2RlJylcIj57e1xuICAgICAgICAgIGpvdXJuZXlNb2RlbD8uZGVwYXJ0dXJlPy5haXJwb3J0Q29kZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0VGltZUNsYXNzKGpvdXJuZXlNb2RlbD8uZGVwYXJ0dXJlKVwiPlxuICAgICAgICA8c3Bhbj57eyBkZXBhcnR1cmVMYWJlbCB9fSB7eyBjdXJyZW50Sm91cm5leT8uZGVwYXJ0dXJlRGF0ZSB9fSB7eyBjdXJyZW50Sm91cm5leT8uZGVwYXJ0dXJlVGltZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsnZXN0aW1hdGVkLXRpbWUnXSlcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGpvdXJuZXlNb2RlbD8uZGVwYXJ0dXJlPy5lc3RpbWF0ZWRUaW1lIHx8XG4gICAgICAgICAgam91cm5leU1vZGVsPy5kZXBhcnR1cmU/LmVzdGltYXRlZERhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVwYXJ0dXJlTGFiZWwgfX1cbiAgICAgICAge3sgY3VycmVudEpvdXJuZXk/LmVzdGltYXRlZERlcGFydHVyZURhdGUgfX1cbiAgICAgICAge3sgY3VycmVudEpvdXJuZXk/LmVzdGltYXRlZERlcGFydHVyZVRpbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2pvdXJuZXktZGV0YWlscycpXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnZmxpZ2h0LWRldGFpbHMnLCBbJ2Fycml2YWwnXSlcIj5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbJ3BsYWNlJ10pXCI+XG4gICAgICAgIHt7IGpvdXJuZXlNb2RlbD8uYXJyaXZhbD8uYWlycG9ydE5hbWUgfX1cbiAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdhaXJwb3J0LWNvZGUnKVwiPnt7XG4gICAgICAgICAgam91cm5leU1vZGVsPy5hcnJpdmFsPy5haXJwb3J0Q29kZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0VGltZUNsYXNzKGpvdXJuZXlNb2RlbD8uYXJyaXZhbClcIj5cbiAgICAgICAgPHNwYW4+e3sgYXJyaXZhbExhYmVsIH19IHt7IGN1cnJlbnRKb3VybmV5Py5hcnJpdmFsRGF0ZSB9fSB7eyBjdXJyZW50Sm91cm5leT8uYXJyaXZhbFRpbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbJ2VzdGltYXRlZC10aW1lJ10pXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBqb3VybmV5TW9kZWw/LmFycml2YWw/LmVzdGltYXRlZFRpbWUgfHxcbiAgICAgICAgICBqb3VybmV5TW9kZWw/LmFycml2YWw/LmVzdGltYXRlZERhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgYXJyaXZhbExhYmVsIH19IHt7IGN1cnJlbnRKb3VybmV5Py5lc3RpbWF0ZWRBcnJpdmFsRGF0ZSB9fVxuICAgICAgICB7eyBjdXJyZW50Sm91cm5leT8uZXN0aW1hdGVkQXJyaXZhbFRpbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -79,7 +79,9 @@ export class JourneyStopoverComponent extends NasComponentBase {
79
79
  departureDate: this.transformDate(this.journeyStopoverModel.localDepartureDate, this.dateFormat),
80
80
  arrivalDate: this.transformDate(this.journeyStopoverModel.localArrivalDate, this.dateFormat),
81
81
  estimatedDepartureDate: this.transformDate(this.journeyStopoverModel.estimatedDepartureTime, this.dateFormat),
82
- estimatedArrivalDate: this.transformDate(this.journeyStopoverModel.estimatedArrivalTime, this.dateFormat)
82
+ estimatedArrivalDate: this.transformDate(this.journeyStopoverModel.estimatedArrivalTime, this.dateFormat),
83
+ estimatedDepartureTime: this.transformDate(this.journeyStopoverModel.estimatedDepartureTime, this.timeFormat),
84
+ estimatedArrivalTime: this.transformDate(this.journeyStopoverModel.estimatedArrivalTime, this.timeFormat)
83
85
  };
84
86
  }
85
87
  }
@@ -93,12 +95,20 @@ export class JourneyStopoverComponent extends NasComponentBase {
93
95
  numberOfMinutes: Math.floor(differenceInMinutes % 60)
94
96
  };
95
97
  }
98
+ getTimeClass(estimatedTime, estimatedDate) {
99
+ if (estimatedTime || estimatedDate) {
100
+ return this.getClass('', ['crossed-time']);
101
+ }
102
+ else {
103
+ return this.getClass('', ['time']);
104
+ }
105
+ }
96
106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: JourneyStopoverComponent, deps: [{ token: i1.DatePipe }, { token: i2.DateHelper }], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: JourneyStopoverComponent, selector: "nas-journey-stopover", inputs: { journeyStopoverModel: "journeyStopoverModel", transitLabel: "transitLabel", arrivalTimeLabel: "arrivalTimeLabel", departureTimeLabel: "departureTimeLabel", timeFormat: "timeFormat", dateFormat: "dateFormat", transitHoursIndicator: "transitHoursIndicator", transitMinutesIndicator: "transitMinutesIndicator", locale: "locale", timeZone: "timeZone" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyStopoverModel\">\n <span [nasClass]=\"lineClass\"></span>\n\n <div [nasClass]=\"getClass('stopover-details')\">\n <div\n [nasClass]=\"getClass('', ['stopover-time'])\"\n *ngIf=\"displayStopoverTime\"\n >\n {{ transitLabel }}\n (<span *ngIf=\"stopoverTime?.numberOfHours\"\n >{{ stopoverTime?.numberOfHours\n }}{{ transitHoursIndicator }}&nbsp;</span\n >\n <span *ngIf=\"stopoverTime?.numberOfMinutes\"\n >{{ stopoverTime?.numberOfMinutes }}{{ transitMinutesIndicator }}</span\n >)\n </div>\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyStopoverModel?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyStopoverModel?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getClass('', ['arrival'])\">\n {{ arrivalTimeLabel }} {{ currentStopover?.arrivalDate }}\n {{ currentStopover?.arrivalTime }}\n </div>\n <div [nasClass]=\"getClass('', ['departure'])\">\n {{ departureTimeLabel }} {{ currentStopover?.departureDate }}\n {{ currentStopover?.departureTime }}\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey-stopover{position:relative}.nas-journey-stopover__line{position:absolute;top:20px;left:-31px;background-image:radial-gradient(circle closest-side,#d8d8d8 6px,transparent 100%);background-position:0 100%;background-repeat:repeat-x;background-size:6px 10px}.nas-journey-stopover__line--transit-label{top:0px}.nas-journey-stopover__line:before{content:\"\";position:absolute;left:-4px;width:15px;height:15px;border-radius:50%}.nas-journey-stopover__line:before{top:25px;background-color:#003251}.nas-journey-stopover .nas-journey-stopover__stopover-details{padding-top:15px;padding-bottom:15px}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--stopover-time{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:22px;line-height:28px}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place .nas-journey-stopover__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;top:-.5em;letter-spacing:0;vertical-align:super}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--arrival,.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--departure{font-family:ApercuMono,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }] }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: JourneyStopoverComponent, selector: "nas-journey-stopover", inputs: { journeyStopoverModel: "journeyStopoverModel", transitLabel: "transitLabel", arrivalTimeLabel: "arrivalTimeLabel", departureTimeLabel: "departureTimeLabel", timeFormat: "timeFormat", dateFormat: "dateFormat", transitHoursIndicator: "transitHoursIndicator", transitMinutesIndicator: "transitMinutesIndicator", locale: "locale", timeZone: "timeZone" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyStopoverModel\">\n <span [nasClass]=\"lineClass\"></span>\n\n <div [nasClass]=\"getClass('stopover-details')\">\n <div\n [nasClass]=\"getClass('', ['stopover-time'])\"\n *ngIf=\"displayStopoverTime\"\n >\n {{ transitLabel }}\n (<span *ngIf=\"stopoverTime?.numberOfHours\"\n >{{ stopoverTime?.numberOfHours\n }}{{ transitHoursIndicator }}&nbsp;</span\n >\n <span *ngIf=\"stopoverTime?.numberOfMinutes\"\n >{{ stopoverTime?.numberOfMinutes }} {{ transitMinutesIndicator }}</span\n >)\n </div>\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyStopoverModel?.airportName }}\n {{ journeyStopoverModel?.airportCode }}\n </div>\n <div [nasClass]=\"getTimeClass(currentStopover?.estimatedArrivalTime, currentStopover?.estimatedArrivalDate)\">\n <div [nasClass]=\"getClass('', ['arrival'])\">\n <span>{{arrivalTimeLabel}} {{currentStopover?.arrivalDate}} {{currentStopover?.arrivalTime}}</span>\n </div>\n <div [nasClass]=\"getClass('', ['estimated-time'])\" *ngIf=\"currentStopover?.estimatedArrivalDate || currentStopover?.estimatedArrivalTime\">\n {{ arrivalTimeLabel }} {{ currentStopover?.estimatedArrivalDate }}\n {{ currentStopover?.estimatedArrivalTime }}\n </div>\n </div>\n <div [nasClass]=\"getTimeClass(currentStopover?.estimatedDepartureTime, currentStopover?.estimatedDepartureDate)\">\n <div [nasClass]=\"getClass('', ['departure'])\">\n <span>{{ departureTimeLabel }} {{ currentStopover?.departureDate }} {{ currentStopover?.departureTime }}</span>\n </div>\n <div [nasClass]=\"getClass('', ['estimated-time'])\" *ngIf=\"currentStopover?.estimatedDepartureDate || currentStopover?.estimatedDepartureTime\">\n {{ departureTimeLabel }} {{ currentStopover?.estimatedDepartureDate }}\n {{ currentStopover?.estimatedDepartureTime }}\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey-stopover{position:relative}.nas-journey-stopover__line{position:absolute;top:20px;left:-31px;background-image:radial-gradient(circle closest-side,#d8d8d8 6px,transparent 100%);background-position:0 100%;background-repeat:repeat-x;background-size:6px 10px}.nas-journey-stopover__line--transit-label{top:0px}.nas-journey-stopover__line:before{content:\"\";position:absolute;left:-.5px;width:8px;height:8px;border-radius:50%}.nas-journey-stopover__line:before{top:25px;background-color:#003251}.nas-journey-stopover .nas-journey-stopover__stopover-details{padding-top:15px;padding-bottom:15px}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--stopover-time{font-size:12px;font-weight:600}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place .nas-journey-stopover__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;top:-.5em;letter-spacing:0;vertical-align:super}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--crossed-time{color:#6f6f6f}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--crossed-time span{text-decoration:line-through}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--estimated-time{color:#e5212d}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }] }); }
98
108
  }
99
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: JourneyStopoverComponent, decorators: [{
100
110
  type: Component,
101
- args: [{ selector: 'nas-journey-stopover', template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyStopoverModel\">\n <span [nasClass]=\"lineClass\"></span>\n\n <div [nasClass]=\"getClass('stopover-details')\">\n <div\n [nasClass]=\"getClass('', ['stopover-time'])\"\n *ngIf=\"displayStopoverTime\"\n >\n {{ transitLabel }}\n (<span *ngIf=\"stopoverTime?.numberOfHours\"\n >{{ stopoverTime?.numberOfHours\n }}{{ transitHoursIndicator }}&nbsp;</span\n >\n <span *ngIf=\"stopoverTime?.numberOfMinutes\"\n >{{ stopoverTime?.numberOfMinutes }}{{ transitMinutesIndicator }}</span\n >)\n </div>\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyStopoverModel?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyStopoverModel?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getClass('', ['arrival'])\">\n {{ arrivalTimeLabel }} {{ currentStopover?.arrivalDate }}\n {{ currentStopover?.arrivalTime }}\n </div>\n <div [nasClass]=\"getClass('', ['departure'])\">\n {{ departureTimeLabel }} {{ currentStopover?.departureDate }}\n {{ currentStopover?.departureTime }}\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey-stopover{position:relative}.nas-journey-stopover__line{position:absolute;top:20px;left:-31px;background-image:radial-gradient(circle closest-side,#d8d8d8 6px,transparent 100%);background-position:0 100%;background-repeat:repeat-x;background-size:6px 10px}.nas-journey-stopover__line--transit-label{top:0px}.nas-journey-stopover__line:before{content:\"\";position:absolute;left:-4px;width:15px;height:15px;border-radius:50%}.nas-journey-stopover__line:before{top:25px;background-color:#003251}.nas-journey-stopover .nas-journey-stopover__stopover-details{padding-top:15px;padding-bottom:15px}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--stopover-time{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:22px;line-height:28px}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place .nas-journey-stopover__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;top:-.5em;letter-spacing:0;vertical-align:super}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--arrival,.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--departure{font-family:ApercuMono,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6f6f6f}\n"] }]
111
+ args: [{ selector: 'nas-journey-stopover', template: "<div [nasClass]=\"getClass()\" *ngIf=\"journeyStopoverModel\">\n <span [nasClass]=\"lineClass\"></span>\n\n <div [nasClass]=\"getClass('stopover-details')\">\n <div\n [nasClass]=\"getClass('', ['stopover-time'])\"\n *ngIf=\"displayStopoverTime\"\n >\n {{ transitLabel }}\n (<span *ngIf=\"stopoverTime?.numberOfHours\"\n >{{ stopoverTime?.numberOfHours\n }}{{ transitHoursIndicator }}&nbsp;</span\n >\n <span *ngIf=\"stopoverTime?.numberOfMinutes\"\n >{{ stopoverTime?.numberOfMinutes }} {{ transitMinutesIndicator }}</span\n >)\n </div>\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyStopoverModel?.airportName }}\n {{ journeyStopoverModel?.airportCode }}\n </div>\n <div [nasClass]=\"getTimeClass(currentStopover?.estimatedArrivalTime, currentStopover?.estimatedArrivalDate)\">\n <div [nasClass]=\"getClass('', ['arrival'])\">\n <span>{{arrivalTimeLabel}} {{currentStopover?.arrivalDate}} {{currentStopover?.arrivalTime}}</span>\n </div>\n <div [nasClass]=\"getClass('', ['estimated-time'])\" *ngIf=\"currentStopover?.estimatedArrivalDate || currentStopover?.estimatedArrivalTime\">\n {{ arrivalTimeLabel }} {{ currentStopover?.estimatedArrivalDate }}\n {{ currentStopover?.estimatedArrivalTime }}\n </div>\n </div>\n <div [nasClass]=\"getTimeClass(currentStopover?.estimatedDepartureTime, currentStopover?.estimatedDepartureDate)\">\n <div [nasClass]=\"getClass('', ['departure'])\">\n <span>{{ departureTimeLabel }} {{ currentStopover?.departureDate }} {{ currentStopover?.departureTime }}</span>\n </div>\n <div [nasClass]=\"getClass('', ['estimated-time'])\" *ngIf=\"currentStopover?.estimatedDepartureDate || currentStopover?.estimatedDepartureTime\">\n {{ departureTimeLabel }} {{ currentStopover?.estimatedDepartureDate }}\n {{ currentStopover?.estimatedDepartureTime }}\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-journey-stopover{position:relative}.nas-journey-stopover__line{position:absolute;top:20px;left:-31px;background-image:radial-gradient(circle closest-side,#d8d8d8 6px,transparent 100%);background-position:0 100%;background-repeat:repeat-x;background-size:6px 10px}.nas-journey-stopover__line--transit-label{top:0px}.nas-journey-stopover__line:before{content:\"\";position:absolute;left:-.5px;width:8px;height:8px;border-radius:50%}.nas-journey-stopover__line:before{top:25px;background-color:#003251}.nas-journey-stopover .nas-journey-stopover__stopover-details{padding-top:15px;padding-bottom:15px}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--stopover-time{font-size:12px;font-weight:600}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--place .nas-journey-stopover__airport-code{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;top:-.5em;letter-spacing:0;vertical-align:super}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--crossed-time{color:#6f6f6f}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--crossed-time span{text-decoration:line-through}.nas-journey-stopover .nas-journey-stopover__stopover-details .nas-journey-stopover--estimated-time{color:#e5212d}\n"] }]
102
112
  }], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i2.DateHelper }]; }, propDecorators: { journeyStopoverModel: [{
103
113
  type: Input
104
114
  }], transitLabel: [{
@@ -120,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
120
130
  }], timeZone: [{
121
131
  type: Input
122
132
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXktc3RvcG92ZXIvam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXktc3RvcG92ZXIvam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBUXRFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUE0RzVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sR0FBRyxDQUFDO2VBQzFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztlQUN0QyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxZQUFvQixR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WUFBWTtzQkFBcEIsS0FBSztnQkFVRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBU0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFVRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBVUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQVVHLE1BQU07c0JBQWQsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBKb3VybmV5U3RvcG92ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvam91cm5leS1zdG9wb3Zlci5tb2RlbCc7XG5pbXBvcnQgeyBTdG9wb3ZlclRpbWVNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3N0b3BvdmVyLXRpbWUubW9kZWwnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVdGNEYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvdXRjLWRhdGUubW9kZWwnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIGpvdXJuZXktc3RvcG92ZXIgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtam91cm5leS1zdG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb3VybmV5LXN0b3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEpvdXJuZXlTdG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIHN0b3BvdmVyVGltZTogU3RvcG92ZXJUaW1lTW9kZWw7XG4gIGN1cnJlbnRTdG9wb3Zlcjoge1xuICAgIGRlcGFydHVyZVRpbWU6IHN0cmluZzsgYXJyaXZhbFRpbWU6IHN0cmluZztcbiAgICBkZXBhcnR1cmVEYXRlOiBzdHJpbmc7IGFycml2YWxEYXRlOiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkQXJyaXZhbFRpbWU/OiBzdHJpbmc7IGVzdGltYXRlZERlcGFydHVyZVRpbWU/OiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkQXJyaXZhbERhdGU/OiBzdHJpbmc7IGVzdGltYXRlZERlcGFydHVyZURhdGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSByZWNvcmQgY29udGFpbmluZyBKb3VybmV5LXN0b3BvdmVyIGRldGFpbHMuXG4gICAqIEByZXF1aXJlZFxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXktc3RvcG92ZXIgW2pvdXJuZXlTdG9wb3Zlck1vZGVsXT1cImpvdXJuZXlTdG9wb3Zlck1vZGVsXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgICovXG4gIEBJbnB1dCgpIGpvdXJuZXlTdG9wb3Zlck1vZGVsOiBKb3VybmV5U3RvcG92ZXJNb2RlbDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgbGFiZWwgcGxhY2VkIGJlZm9yZSB0cmFuc2l0IHN0b3AgdGltZS5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1qb3VybmV5LXN0b3BvdmVyIFt0cmFuc2l0TGFiZWxdPVwiJ1RyYW5zaXQgc3RvcCdcIj48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAgKi9cbiAgQElucHV0KCkgdHJhbnNpdExhYmVsOiBzdHJpbmc7XG5cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGxhYmVsIHBsYWNlZCBiZWZvcmUgYXJyaXZhbCB0aW1lLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXktc3RvcG92ZXIgW2Fycml2YWxUaW1lTGFiZWxdPVwiJ0Fycml2YWwnXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgICovXG4gIEBJbnB1dCgpIGFycml2YWxUaW1lTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGxhYmVsIHBsYWNlZCBiZWZvcmUgZGVwYXJ0dXJlIHRpbWUuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbZGVwYXJ0dXJlVGltZUxhYmVsXT1cIidEZXBhcnR1cmUnXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgICovXG4gIEBJbnB1dCgpIGRlcGFydHVyZVRpbWVMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aW1lIGRpc3BsYXkgZm9ybWF0LCBpZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgZm9ybWF0dGluZyBvbiBkYXRlIHdpbGwgYmUgYXBwbGllZFxuICAgKiBpLmUgJ0hIOm1tJyAsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGRpc3BsYXlpbmcgdGltZSBsaWtlICcwOToyMycuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbdGltZUZvcm1hdF09J0hIOm1tJz48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAgKi9cbiAgQElucHV0KCkgdGltZUZvcm1hdCA9ICdISDptbSc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIGRhdGUgZGlzcGxheSBmb3JtYXQsIGlmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBmb3JtYXR0aW5nIG9uIGRhdGUgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGkuZSAnZGQgTU1NLCcgLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBkaXNwbGF5aW5nIHRpbWUgbGlrZSAnMjEgRmViLCcuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbZGF0ZUZvcm1hdF09J2RkIE1NTSwnPjwvbmFzLWpvdXJuZXktc3RvcG92ZXI+XG4gICovXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQgPSAnZGQgTU1NLCc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIFRyYW5zaXQgSG91ciBpbmRpY2F0b3IuXG4gICAqIGlmIG5vdCBwcm92aWRlZCwgdHJhbnNpdCB0aW1lIHdpbGwgbm90IGJlIHNob3duXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbdHJhbnNpdEhvdXJzSW5kaWNhdG9yXT0naCc+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgKi9cbiAgQElucHV0KCkgdHJhbnNpdEhvdXJzSW5kaWNhdG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIFRyYW5zaXQgTWludXRlcyBpbmRpY2F0b3IuXG4gICAqIGlmIG5vdCBwcm92aWRlZCwgdHJhbnNpdCB0aW1lIHdpbGwgbm90IGJlIHNob3duXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbdHJhbnNpdE1pbnV0ZXNJbmRpY2F0b3JdPSdtJz48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAqL1xuICBASW5wdXQoKSB0cmFuc2l0TWludXRlc0luZGljYXRvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbG9jYWxlIGNvZGUgZm9yIHRoZSBsb2NhbGUgZm9ybWF0IHJ1bGVzIHRvIHVzZS4gV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIExPQ0FMRV9JRCwgd2hpY2ggaXMgZW4tVVMgYnkgZGVmYXVsdC5cbiAgICogVGhpcyByZXF1aXJlcyB0aGF0IHJlZ2lzdGVyTG9jYWxlRGF0YSBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSBsb2NhbGUuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbbG9jYWxlXT1cIidlcydcIj48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAqL1xuICBASW5wdXQoKSBsb2NhbGUgPSAnZW4tVVMnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFVzZXIgY2FuIGlucHV0IHRoZSB0aW1lem9uZSB0byBsb2NhbGl6ZSB0aGUgZGF0ZS5cbiAgICogRGVmYXVsdCBpcyBzZXQgdG8gVVRDIGFuZCBpdCB3aWxsIGJ5IGRlZmF1bHQgc2hvdyB0aGUgZGF0ZSBleGFjdGx5IHdoYXQgaXMgcGFzc2VkIHRvIGl0LlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXktc3RvcG92ZXIgW3RpbWVab25lXT1cIidVVEMnXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgKi9cbiAgQElucHV0KCkgdGltZVpvbmUgPSAnVVRDJztcblxuICBnZXQgZGlzcGxheVN0b3BvdmVyVGltZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2l0TWludXRlc0luZGljYXRvcj8ubGVuZ3RoID4gMFxuICAgICAgJiYgdGhpcy50cmFuc2l0SG91cnNJbmRpY2F0b3I/Lmxlbmd0aCA+IDBcbiAgICAgICYmICh0aGlzLnN0b3BvdmVyVGltZT8ubnVtYmVyT2ZIb3VycyA+IDAgfHwgdGhpcy5zdG9wb3ZlclRpbWU/Lm51bWJlck9mTWludXRlcyA+IDApO1xuICB9XG5cbiAgZ2V0IGxpbmVDbGFzcygpOiBDbGFzc01vZGVsIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5U3RvcG92ZXJUaW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygnbGluZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygnbGluZScsIFsndHJhbnNpdC1sYWJlbCddKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZUhlbHBlcikge1xuICAgIHN1cGVyKCduYXMtam91cm5leS1zdG9wb3ZlcicpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNldERpc3BsYXlEYXRlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNwbGF5RGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuam91cm5leVN0b3BvdmVyTW9kZWwpIHtcblxuICAgICAgdGhpcy5zdG9wb3ZlclRpbWUgPSB0aGlzLmdldFN0b3BvdmVyVGltZSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbERlcGFydHVyZVRpbWUpLFxuICAgICAgICB0aGlzLmRhdGVTZXJ2aWNlLmRhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbEFycml2YWxUaW1lKSk7XG5cbiAgICAgIHRoaXMuY3VycmVudFN0b3BvdmVyID0ge1xuICAgICAgICBkZXBhcnR1cmVUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbERlcGFydHVyZVRpbWUsIHRoaXMudGltZUZvcm1hdCksXG4gICAgICAgIGFycml2YWxUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbEFycml2YWxUaW1lLCB0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgICBkZXBhcnR1cmVEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbERlcGFydHVyZURhdGUsIHRoaXMuZGF0ZUZvcm1hdCksXG4gICAgICAgIGFycml2YWxEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbEFycml2YWxEYXRlLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWREZXBhcnR1cmVEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5lc3RpbWF0ZWREZXBhcnR1cmVUaW1lLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWRBcnJpdmFsRGF0ZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leVN0b3BvdmVyTW9kZWwuZXN0aW1hdGVkQXJyaXZhbFRpbWUsIHRoaXMuZGF0ZUZvcm1hdClcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1EYXRlKGRhdGU6IFV0Y0RhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VydmljZS5kYXRlKGRhdGUpLCBmb3JtYXQsIHRoaXMudGltZVpvbmUsIHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RvcG92ZXJUaW1lKGRlcGFydHVyZVRpbWU6IERhdGUsIGFycml2YWxUaW1lOiBEYXRlKTogU3RvcG92ZXJUaW1lTW9kZWwge1xuICAgIGNvbnN0IGRpZmZlcmVuY2VJbk1pbnV0ZXMgPSAoKChkZXBhcnR1cmVUaW1lLmdldFRpbWUoKSkgLSAoYXJyaXZhbFRpbWUuZ2V0VGltZSgpKSkgLyAoMTAwMCAqIDYwKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG51bWJlck9mSG91cnM6IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTWludXRlcyAvIDYwKSxcbiAgICAgIG51bWJlck9mTWludXRlczogTWF0aC5mbG9vcihkaWZmZXJlbmNlSW5NaW51dGVzICUgNjApXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoKVwiICpuZ0lmPVwiam91cm5leVN0b3BvdmVyTW9kZWxcIj5cbiAgPHNwYW4gW25hc0NsYXNzXT1cImxpbmVDbGFzc1wiPjwvc3Bhbj5cblxuICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnc3RvcG92ZXItZGV0YWlscycpXCI+XG4gICAgPGRpdlxuICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbJ3N0b3BvdmVyLXRpbWUnXSlcIlxuICAgICAgKm5nSWY9XCJkaXNwbGF5U3RvcG92ZXJUaW1lXCJcbiAgICA+XG4gICAgICB7eyB0cmFuc2l0TGFiZWwgfX1cbiAgICAgICg8c3BhbiAqbmdJZj1cInN0b3BvdmVyVGltZT8ubnVtYmVyT2ZIb3Vyc1wiXG4gICAgICAgID57eyBzdG9wb3ZlclRpbWU/Lm51bWJlck9mSG91cnNcbiAgICAgICAgfX17eyB0cmFuc2l0SG91cnNJbmRpY2F0b3IgfX0mbmJzcDs8L3NwYW5cbiAgICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwic3RvcG92ZXJUaW1lPy5udW1iZXJPZk1pbnV0ZXNcIlxuICAgICAgICA+e3sgc3RvcG92ZXJUaW1lPy5udW1iZXJPZk1pbnV0ZXMgfX17eyB0cmFuc2l0TWludXRlc0luZGljYXRvciB9fTwvc3BhblxuICAgICAgPilcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnJywgWydwbGFjZSddKVwiPlxuICAgICAge3sgam91cm5leVN0b3BvdmVyTW9kZWw/LmFpcnBvcnROYW1lIH19XG4gICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2FpcnBvcnQtY29kZScpXCI+e3tcbiAgICAgICAgam91cm5leVN0b3BvdmVyTW9kZWw/LmFpcnBvcnRDb2RlXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnJywgWydhcnJpdmFsJ10pXCI+XG4gICAgICB7eyBhcnJpdmFsVGltZUxhYmVsIH19IHt7IGN1cnJlbnRTdG9wb3Zlcj8uYXJyaXZhbERhdGUgfX1cbiAgICAgIHt7IGN1cnJlbnRTdG9wb3Zlcj8uYXJyaXZhbFRpbWUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnJywgWydkZXBhcnR1cmUnXSlcIj5cbiAgICAgIHt7IGRlcGFydHVyZVRpbWVMYWJlbCB9fSB7eyBjdXJyZW50U3RvcG92ZXI/LmRlcGFydHVyZURhdGUgfX1cbiAgICAgIHt7IGN1cnJlbnRTdG9wb3Zlcj8uZGVwYXJ0dXJlVGltZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXktc3RvcG92ZXIvam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2pvdXJuZXktc3RvcG92ZXIvam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBUXRFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUE0RzVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sR0FBRyxDQUFDO2VBQzFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztlQUN0QyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxZQUFvQixR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ZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1NBQ3RELENBQUM7SUFDSixDQUFDO0lBRU0sWUFBWSxDQUFDLGFBQXFCLEVBQUUsYUFBcUI7UUFDOUQsSUFBSSxhQUFhLElBQUksYUFBYSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7OEdBdktVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLGdkQ3RCckMseTlEQXlDQTs7MkZEbkJhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7d0hBc0J2QixvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFVRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBU0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFVRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBVUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQVVHLE1BQU07c0JBQWQsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBKb3VybmV5U3RvcG92ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvam91cm5leS1zdG9wb3Zlci5tb2RlbCc7XG5pbXBvcnQgeyBTdG9wb3ZlclRpbWVNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3N0b3BvdmVyLXRpbWUubW9kZWwnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVdGNEYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvdXRjLWRhdGUubW9kZWwnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIGpvdXJuZXktc3RvcG92ZXIgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtam91cm5leS1zdG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb3VybmV5LXN0b3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam91cm5leS1zdG9wb3Zlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEpvdXJuZXlTdG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIHN0b3BvdmVyVGltZTogU3RvcG92ZXJUaW1lTW9kZWw7XG4gIGN1cnJlbnRTdG9wb3Zlcjoge1xuICAgIGRlcGFydHVyZVRpbWU6IHN0cmluZzsgYXJyaXZhbFRpbWU6IHN0cmluZztcbiAgICBkZXBhcnR1cmVEYXRlOiBzdHJpbmc7IGFycml2YWxEYXRlOiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkQXJyaXZhbFRpbWU/OiBzdHJpbmc7IGVzdGltYXRlZERlcGFydHVyZVRpbWU/OiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkQXJyaXZhbERhdGU/OiBzdHJpbmc7IGVzdGltYXRlZERlcGFydHVyZURhdGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSByZWNvcmQgY29udGFpbmluZyBKb3VybmV5LXN0b3BvdmVyIGRldGFpbHMuXG4gICAqIEByZXF1aXJlZFxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXktc3RvcG92ZXIgW2pvdXJuZXlTdG9wb3Zlck1vZGVsXT1cImpvdXJuZXlTdG9wb3Zlck1vZGVsXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgICovXG4gIEBJbnB1dCgpIGpvdXJuZXlTdG9wb3Zlck1vZGVsOiBKb3VybmV5U3RvcG92ZXJNb2RlbDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgbGFiZWwgcGxhY2VkIGJlZm9yZSB0cmFuc2l0IHN0b3AgdGltZS5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1qb3VybmV5LXN0b3BvdmVyIFt0cmFuc2l0TGFiZWxdPVwiJ1RyYW5zaXQgc3RvcCdcIj48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAgKi9cbiAgQElucHV0KCkgdHJhbnNpdExhYmVsOiBzdHJpbmc7XG5cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGxhYmVsIHBsYWNlZCBiZWZvcmUgYXJyaXZhbCB0aW1lLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXktc3RvcG92ZXIgW2Fycml2YWxUaW1lTGFiZWxdPVwiJ0Fycml2YWwnXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgICovXG4gIEBJbnB1dCgpIGFycml2YWxUaW1lTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGxhYmVsIHBsYWNlZCBiZWZvcmUgZGVwYXJ0dXJlIHRpbWUuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbZGVwYXJ0dXJlVGltZUxhYmVsXT1cIidEZXBhcnR1cmUnXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgICovXG4gIEBJbnB1dCgpIGRlcGFydHVyZVRpbWVMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aW1lIGRpc3BsYXkgZm9ybWF0LCBpZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgZm9ybWF0dGluZyBvbiBkYXRlIHdpbGwgYmUgYXBwbGllZFxuICAgKiBpLmUgJ0hIOm1tJyAsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGRpc3BsYXlpbmcgdGltZSBsaWtlICcwOToyMycuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbdGltZUZvcm1hdF09J0hIOm1tJz48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAgKi9cbiAgQElucHV0KCkgdGltZUZvcm1hdCA9ICdISDptbSc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIGRhdGUgZGlzcGxheSBmb3JtYXQsIGlmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBmb3JtYXR0aW5nIG9uIGRhdGUgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGkuZSAnZGQgTU1NLCcgLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBkaXNwbGF5aW5nIHRpbWUgbGlrZSAnMjEgRmViLCcuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbZGF0ZUZvcm1hdF09J2RkIE1NTSwnPjwvbmFzLWpvdXJuZXktc3RvcG92ZXI+XG4gICovXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQgPSAnZGQgTU1NLCc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIFRyYW5zaXQgSG91ciBpbmRpY2F0b3IuXG4gICAqIGlmIG5vdCBwcm92aWRlZCwgdHJhbnNpdCB0aW1lIHdpbGwgbm90IGJlIHNob3duXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbdHJhbnNpdEhvdXJzSW5kaWNhdG9yXT0naCc+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgKi9cbiAgQElucHV0KCkgdHJhbnNpdEhvdXJzSW5kaWNhdG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIFRyYW5zaXQgTWludXRlcyBpbmRpY2F0b3IuXG4gICAqIGlmIG5vdCBwcm92aWRlZCwgdHJhbnNpdCB0aW1lIHdpbGwgbm90IGJlIHNob3duXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbdHJhbnNpdE1pbnV0ZXNJbmRpY2F0b3JdPSdtJz48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAqL1xuICBASW5wdXQoKSB0cmFuc2l0TWludXRlc0luZGljYXRvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbG9jYWxlIGNvZGUgZm9yIHRoZSBsb2NhbGUgZm9ybWF0IHJ1bGVzIHRvIHVzZS4gV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIExPQ0FMRV9JRCwgd2hpY2ggaXMgZW4tVVMgYnkgZGVmYXVsdC5cbiAgICogVGhpcyByZXF1aXJlcyB0aGF0IHJlZ2lzdGVyTG9jYWxlRGF0YSBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSBsb2NhbGUuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtam91cm5leS1zdG9wb3ZlciBbbG9jYWxlXT1cIidlcydcIj48L25hcy1qb3VybmV5LXN0b3BvdmVyPlxuICAqL1xuICBASW5wdXQoKSBsb2NhbGUgPSAnZW4tVVMnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFVzZXIgY2FuIGlucHV0IHRoZSB0aW1lem9uZSB0byBsb2NhbGl6ZSB0aGUgZGF0ZS5cbiAgICogRGVmYXVsdCBpcyBzZXQgdG8gVVRDIGFuZCBpdCB3aWxsIGJ5IGRlZmF1bHQgc2hvdyB0aGUgZGF0ZSBleGFjdGx5IHdoYXQgaXMgcGFzc2VkIHRvIGl0LlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLWpvdXJuZXktc3RvcG92ZXIgW3RpbWVab25lXT1cIidVVEMnXCI+PC9uYXMtam91cm5leS1zdG9wb3Zlcj5cbiAgKi9cbiAgQElucHV0KCkgdGltZVpvbmUgPSAnVVRDJztcblxuICBnZXQgZGlzcGxheVN0b3BvdmVyVGltZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2l0TWludXRlc0luZGljYXRvcj8ubGVuZ3RoID4gMFxuICAgICAgJiYgdGhpcy50cmFuc2l0SG91cnNJbmRpY2F0b3I/Lmxlbmd0aCA+IDBcbiAgICAgICYmICh0aGlzLnN0b3BvdmVyVGltZT8ubnVtYmVyT2ZIb3VycyA+IDAgfHwgdGhpcy5zdG9wb3ZlclRpbWU/Lm51bWJlck9mTWludXRlcyA+IDApO1xuICB9XG5cbiAgZ2V0IGxpbmVDbGFzcygpOiBDbGFzc01vZGVsIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5U3RvcG92ZXJUaW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygnbGluZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygnbGluZScsIFsndHJhbnNpdC1sYWJlbCddKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZUhlbHBlcikge1xuICAgIHN1cGVyKCduYXMtam91cm5leS1zdG9wb3ZlcicpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNldERpc3BsYXlEYXRlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNwbGF5RGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuam91cm5leVN0b3BvdmVyTW9kZWwpIHtcblxuICAgICAgdGhpcy5zdG9wb3ZlclRpbWUgPSB0aGlzLmdldFN0b3BvdmVyVGltZSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbERlcGFydHVyZVRpbWUpLFxuICAgICAgICB0aGlzLmRhdGVTZXJ2aWNlLmRhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbEFycml2YWxUaW1lKSk7XG5cbiAgICAgIHRoaXMuY3VycmVudFN0b3BvdmVyID0ge1xuICAgICAgICBkZXBhcnR1cmVUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbERlcGFydHVyZVRpbWUsIHRoaXMudGltZUZvcm1hdCksXG4gICAgICAgIGFycml2YWxUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbEFycml2YWxUaW1lLCB0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgICBkZXBhcnR1cmVEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbERlcGFydHVyZURhdGUsIHRoaXMuZGF0ZUZvcm1hdCksXG4gICAgICAgIGFycml2YWxEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5sb2NhbEFycml2YWxEYXRlLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWREZXBhcnR1cmVEYXRlOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5lc3RpbWF0ZWREZXBhcnR1cmVUaW1lLCB0aGlzLmRhdGVGb3JtYXQpLFxuICAgICAgICBlc3RpbWF0ZWRBcnJpdmFsRGF0ZTogdGhpcy50cmFuc2Zvcm1EYXRlKHRoaXMuam91cm5leVN0b3BvdmVyTW9kZWwuZXN0aW1hdGVkQXJyaXZhbFRpbWUsIHRoaXMuZGF0ZUZvcm1hdCksXG4gICAgICAgIGVzdGltYXRlZERlcGFydHVyZVRpbWU6IHRoaXMudHJhbnNmb3JtRGF0ZSh0aGlzLmpvdXJuZXlTdG9wb3Zlck1vZGVsLmVzdGltYXRlZERlcGFydHVyZVRpbWUsIHRoaXMudGltZUZvcm1hdCksXG4gICAgICAgIGVzdGltYXRlZEFycml2YWxUaW1lOiB0aGlzLnRyYW5zZm9ybURhdGUodGhpcy5qb3VybmV5U3RvcG92ZXJNb2RlbC5lc3RpbWF0ZWRBcnJpdmFsVGltZSwgdGhpcy50aW1lRm9ybWF0KVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybURhdGUoZGF0ZTogVXRjRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUoZGF0ZSksIGZvcm1hdCwgdGhpcy50aW1lWm9uZSwgdGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9wb3ZlclRpbWUoZGVwYXJ0dXJlVGltZTogRGF0ZSwgYXJyaXZhbFRpbWU6IERhdGUpOiBTdG9wb3ZlclRpbWVNb2RlbCB7XG4gICAgY29uc3QgZGlmZmVyZW5jZUluTWludXRlcyA9ICgoKGRlcGFydHVyZVRpbWUuZ2V0VGltZSgpKSAtIChhcnJpdmFsVGltZS5nZXRUaW1lKCkpKSAvICgxMDAwICogNjApKTtcbiAgICByZXR1cm4ge1xuICAgICAgbnVtYmVyT2ZIb3VyczogTWF0aC5mbG9vcihkaWZmZXJlbmNlSW5NaW51dGVzIC8gNjApLFxuICAgICAgbnVtYmVyT2ZNaW51dGVzOiBNYXRoLmZsb29yKGRpZmZlcmVuY2VJbk1pbnV0ZXMgJSA2MClcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVDbGFzcyhlc3RpbWF0ZWRUaW1lOiBzdHJpbmcsIGVzdGltYXRlZERhdGU6IHN0cmluZyk6IENsYXNzTW9kZWwge1xuICAgIGlmIChlc3RpbWF0ZWRUaW1lIHx8IGVzdGltYXRlZERhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCcnLCBbJ2Nyb3NzZWQtdGltZSddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJycsIFsndGltZSddKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKClcIiAqbmdJZj1cImpvdXJuZXlTdG9wb3Zlck1vZGVsXCI+XG4gIDxzcGFuIFtuYXNDbGFzc109XCJsaW5lQ2xhc3NcIj48L3NwYW4+XG5cbiAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3N0b3BvdmVyLWRldGFpbHMnKVwiPlxuICAgIDxkaXZcbiAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnJywgWydzdG9wb3Zlci10aW1lJ10pXCJcbiAgICAgICpuZ0lmPVwiZGlzcGxheVN0b3BvdmVyVGltZVwiXG4gICAgPlxuICAgICAge3sgdHJhbnNpdExhYmVsIH19XG4gICAgICAoPHNwYW4gKm5nSWY9XCJzdG9wb3ZlclRpbWU/Lm51bWJlck9mSG91cnNcIlxuICAgICAgICA+e3sgc3RvcG92ZXJUaW1lPy5udW1iZXJPZkhvdXJzXG4gICAgICAgIH19e3sgdHJhbnNpdEhvdXJzSW5kaWNhdG9yIH19Jm5ic3A7PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cInN0b3BvdmVyVGltZT8ubnVtYmVyT2ZNaW51dGVzXCJcbiAgICAgICAgPnt7IHN0b3BvdmVyVGltZT8ubnVtYmVyT2ZNaW51dGVzIH19IHt7IHRyYW5zaXRNaW51dGVzSW5kaWNhdG9yIH19PC9zcGFuXG4gICAgICA+KVxuICAgIDwvZGl2PlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbJ3BsYWNlJ10pXCI+XG4gICAgICB7eyBqb3VybmV5U3RvcG92ZXJNb2RlbD8uYWlycG9ydE5hbWUgfX1cbiAgICAgIHt7IGpvdXJuZXlTdG9wb3Zlck1vZGVsPy5haXJwb3J0Q29kZSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldFRpbWVDbGFzcyhjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZEFycml2YWxUaW1lLCBjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZEFycml2YWxEYXRlKVwiPlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsnYXJyaXZhbCddKVwiPlxuICAgICAgICA8c3Bhbj57e2Fycml2YWxUaW1lTGFiZWx9fSB7e2N1cnJlbnRTdG9wb3Zlcj8uYXJyaXZhbERhdGV9fSB7e2N1cnJlbnRTdG9wb3Zlcj8uYXJyaXZhbFRpbWV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsnZXN0aW1hdGVkLXRpbWUnXSlcIiAgKm5nSWY9XCJjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZEFycml2YWxEYXRlIHx8IGN1cnJlbnRTdG9wb3Zlcj8uZXN0aW1hdGVkQXJyaXZhbFRpbWVcIj5cbiAgICAgICAge3sgYXJyaXZhbFRpbWVMYWJlbCB9fSB7eyBjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZEFycml2YWxEYXRlIH19XG4gICAgICAgIHt7IGN1cnJlbnRTdG9wb3Zlcj8uZXN0aW1hdGVkQXJyaXZhbFRpbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldFRpbWVDbGFzcyhjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZERlcGFydHVyZVRpbWUsIGN1cnJlbnRTdG9wb3Zlcj8uZXN0aW1hdGVkRGVwYXJ0dXJlRGF0ZSlcIj5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbJ2RlcGFydHVyZSddKVwiPlxuICAgICAgICA8c3Bhbj57eyBkZXBhcnR1cmVUaW1lTGFiZWwgfX0ge3sgY3VycmVudFN0b3BvdmVyPy5kZXBhcnR1cmVEYXRlIH19IHt7IGN1cnJlbnRTdG9wb3Zlcj8uZGVwYXJ0dXJlVGltZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFsnZXN0aW1hdGVkLXRpbWUnXSlcIiAgKm5nSWY9XCJjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZERlcGFydHVyZURhdGUgfHwgY3VycmVudFN0b3BvdmVyPy5lc3RpbWF0ZWREZXBhcnR1cmVUaW1lXCI+XG4gICAgICAgIHt7IGRlcGFydHVyZVRpbWVMYWJlbCB9fSB7eyBjdXJyZW50U3RvcG92ZXI/LmVzdGltYXRlZERlcGFydHVyZURhdGUgfX1cbiAgICAgICAge3sgY3VycmVudFN0b3BvdmVyPy5lc3RpbWF0ZWREZXBhcnR1cmVUaW1lIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -152,6 +152,29 @@ export class PassengerSelectComponent extends NasComponentBase {
152
152
  }
153
153
  }
154
154
  }
155
+ if (passengers.type === PassengerType.YoungAdult || passengers.type === PassengerType.Youth) {
156
+ const youngAdult = this.passengers.find(x => x.type === PassengerType.YoungAdult);
157
+ const youth = this.passengers.find(x => x.type === PassengerType.Youth);
158
+ if (youngAdult && youth) {
159
+ if (passengers.type === PassengerType.Youth && youth.count > 0) {
160
+ if (youngAdult.formGroup && youth.formControlName && youngAdult.count !== 0) {
161
+ youngAdult.formGroup.get(youth.formControlName).patchValue(0);
162
+ }
163
+ youngAdult.count = 0;
164
+ }
165
+ if (passengers.type === PassengerType.YoungAdult) {
166
+ youth.count = youngAdult.count > 0 ? 0 : youth.count;
167
+ if (youth.formGroup && youth.formControlName && youngAdult.formGroup && youngAdult.formControlName) {
168
+ if (this.minAdultCount && youngAdult.count === 0) {
169
+ youth.formGroup.get(youth.formControlName).patchValue(this.minAdultCount);
170
+ }
171
+ else if (youth.count > 0) {
172
+ youth.formGroup.get(youth.formControlName).patchValue(0);
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
155
178
  this.setTotalCount();
156
179
  this.passengersChange.emit(this.passengers);
157
180
  }
@@ -228,6 +251,16 @@ export class PassengerSelectComponent extends NasComponentBase {
228
251
  return min;
229
252
  }
230
253
  }
254
+ else if (passengers.type === PassengerType.Youth && youngAdult) {
255
+ const min = !this.minAdultCount ? 0 : this.minAdultCount;
256
+ if (passengers.type === PassengerType.Youth && youth.count < min && youngAdult.count === 0) {
257
+ passengers.count = min;
258
+ return min;
259
+ }
260
+ if (passengers.type === PassengerType.Youth && youth.formGroup && youth.formControlName) {
261
+ return min;
262
+ }
263
+ }
231
264
  else if (!adult && passengers.type === PassengerType.Youth) {
232
265
  const min = !this.minAdultCount ? 0 : this.minAdultCount;
233
266
  return min;
@@ -375,4 +408,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
375
408
  }], focusOnPrevious: [{
376
409
  type: Output
377
410
  }] } });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBRTlFOzs7RUFHRTtBQU1GLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUF1STVEO1FBQ0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFsSWhDOzs7O1VBSUU7UUFDTyxlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUF1R25EOzs7O1VBSUU7UUFDUSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV4RTs7OztVQUlFO1FBQ1EsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhEOzs7O1VBSUU7UUFDUSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFJcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFtQjtRQUMxQixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssYUFBYSxDQUFDLEtBQUs7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMxQixLQUFLLGFBQWEsQ0FBQyxLQUFLO2dCQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDNUIsS0FBSyxhQUFhLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzNCLEtBQUssYUFBYSxDQUFDLEtBQUs7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMxQixLQUFLLGFBQWEsQ0FBQyxVQUFVO2dCQUMzQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBb0IsRUFBRSxLQUFhO1FBQ3pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixRQUFRLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDakIsS0FBSyxXQUFXO2dCQUNkLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDckQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDcEU7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNyRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNwRTtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUN6QjtxQkFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQzdCO1NBQ0o7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBMkIsRUFBRSxLQUFhO1FBQzNELFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRXpCLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3RGLElBQUksWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDakcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFMUUsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsTUFBTSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO3dCQUVoQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRTs0QkFDOUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3ZFO3FCQUNGO2lCQUNGO2FBQ0Y7WUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEUsSUFBSSxVQUFVLElBQUksS0FBSyxFQUFFO2dCQUN2QixJQUFLLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssRUFBRTtvQkFFcEMsSUFBSSxLQUFLLEVBQUU7d0JBQ1QsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7d0JBRWhCLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFOzRCQUM1QyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUMxRDtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzlELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUN0RixJQUFJLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2pHLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRTFFLElBQUksTUFBTSxFQUFFO3dCQUNWLE1BQU0sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQzt3QkFFaEMsSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7NEJBQzlDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUN2RTtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDdEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXhFLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRTtnQkFDbEIsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQzlELElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO3dCQUNqRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMxRDtvQkFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztpQkFDakI7Z0JBRUQsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUU7b0JBQzNDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztvQkFFaEQsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO3dCQUN4RixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7NEJBQzNDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3lCQUMzRTs2QkFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFOzRCQUMxQixLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUMxRDtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUEyQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUM1QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO29CQUNoRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ3JCO2dCQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUV2RSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3RCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDckI7Z0JBRUQsT0FBTyxpQkFBaUIsQ0FBQyxLQUFlLENBQUM7YUFDMUM7WUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO29CQUNoRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ3JCO2dCQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUV2RSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3RCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDckI7Z0JBRUQsT0FBTyxpQkFBaUIsQ0FBQyxLQUFlLENBQUM7YUFDMUM7WUFFRCxJQUFJLFVBQVUsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLENBQUMsQ0FBQzthQUNWO1lBRUQsSUFBSSxVQUFVLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDL0MsT0FBTyxDQUFDLENBQUM7YUFDVjtZQUVELE9BQU8sQ0FBQyxDQUFDO1NBRVY7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRTtZQUMxRSxJQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUU7Z0JBQ3ZCLElBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLE9BQU8sQ0FBQyxDQUFDO2lCQUNWO2FBQ0Y7WUFDRCxJQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUU7Z0JBQ3ZCLElBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLE9BQU8sQ0FBQyxDQUFDO2lCQUNWO2FBQ0Y7U0FDRjthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBRTlDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRTtnQkFDeEQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO2FBQ3pCO1lBRUQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFbkYsSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUMxQixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7YUFDekI7WUFFRCxPQUFPLHFCQUFxQixDQUFDLEtBQUssQ0FBQztTQUNwQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUEyQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDcEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDekQsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7Z0JBQ3JGLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEdBQUcsQ0FBQzthQUNaO1lBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO2dCQUN2RixPQUFPLEdBQUcsQ0FBQzthQUNaO1NBQ0Y7YUFBTSxJQUFJLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRTtZQUM1RCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN6RCxPQUFPLEdBQUcsQ0FBQztTQUNaO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksVUFBVSxFQUFFO1lBQ2hFLElBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7WUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDM0I7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFVBQVUsSUFBSSxLQUFLLEVBQUU7WUFDaEUsSUFBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxDQUFDLENBQUM7YUFDVjtZQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUMzQjthQUFPLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUMzQjtRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4RSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFbkIsSUFBSSxLQUFLLEVBQUU7WUFFVCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7Z0JBQzlDLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFakUsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbEIsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQzFCO3FCQUFNO29CQUNMLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO2lCQUNsQzthQUNGO1NBQ0Y7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtnQkFDOUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUVqRSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNsQixVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztpQkFDMUI7cUJBQU07b0JBQ0wsVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7aUJBQ2xDO2FBQ0Y7U0FDRjtRQUVELElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFO2dCQUN4RCxlQUFlLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQzthQUNwQztpQkFBTTtnQkFDTCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFaEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFO29CQUN2QixlQUFlLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztpQkFDcEM7cUJBQU07b0JBQ0wsZUFBZSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRjtTQUNGO1FBRUQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7Z0JBQzlDLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFakUsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbEIsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQzFCO3FCQUFNO29CQUNMLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO2lCQUNsQzthQUNGO1NBQ0Y7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLGVBQWUsQ0FBQztRQUV6RSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFFbkYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUVoRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1lBRUQsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckQsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNyRDtTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNqRTtJQUVILENBQUM7OEdBNWNVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDRzQkFDckIsb0JBQW9CLHVFQzdCcEMsNG1EQXVDSzs7MkZEWFEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjswRUFLSSxZQUFZO3NCQUEvQyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFVekIsVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFTRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZHJlbixcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFzc2VuZ2VyVHlwZSB9IGZyb20gJy4vZW51bXMvcGFzc2VuZ2VyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXNzZW5nZXJzTW9kZWwgfSBmcm9tICcuL21vZGVscy9wYXNzZW5nZXJzLm1vZGVsJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IE51bWJlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFBhc3NlbmdlciBTZWxlY3QgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1wYXNzZW5nZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3Nlbmdlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzZW5nZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFzc2VuZ2VyU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oTnVtYmVyRmllbGRDb21wb25lbnQpIG51bWJlckZpZWxkcyE6IFF1ZXJ5TGlzdDxOdW1iZXJGaWVsZENvbXBvbmVudD47XG5cbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICBpc0dyb3VwQm9va2luZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBkaWZmZXJlbnQgcGFzc2VuZ2VyIHR5cGVzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICovXG4gIEBJbnB1dCgpIHBhc3NlbmdlcnMgPSBuZXcgQXJyYXk8UGFzc2VuZ2Vyc01vZGVsPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0b3RhbCBtYXhpbXVtIGFtb3VudCBvZiBwYXNzZW5nZXJzLlxuICAqL1xuICBASW5wdXQoKSBtYXhQYXhDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBhZHVsdHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQuXG4gICovXG4gIEBJbnB1dCgpIG1pbkFkdWx0Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbGltaXQgZm9yIHdoZW4gdGhlIHRvdGFsIGFtb3VudCBvZiBwYXNzZW5nZXJzIGV4Y2VlZHMgdG8gYmUgYSBncm91cCBib29raW5nLlxuICAqL1xuICBASW5wdXQoKSBncm91cEJvb2tpbmdMaW1pdDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGl0bGUgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBkcm9wZG93bi5cbiAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIGZvciB0aGUgYWR1bHRzIHBhc3NlbmdlciB0eXBlLlxuICAqL1xuICBASW5wdXQoKSBhZHVsdHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgZm9yIHRoZSBjaGlsZHJlbiBwYXNzZW5nZXIgdHlwZS5cbiAgKi9cbiAgQElucHV0KCkgY2hpbGRyZW5MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCBmb3IgdGhlIGluZmFudHMgcGFzc2VuZ2VyIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBpbmZhbnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAqIEBwcm9wZXJ0eSBJbnB1dFxuICogQGRlc2NyaXB0aW9uXG4gKiBBIGxhYmVsIGZvciB0aGUgYWR1bHRzIHBhc3NlbmdlciB0eXBlLlxuKi9cbiAgQElucHV0KCkgeW91dGhzTGFiZWw6IHN0cmluZztcblxuLyoqXG4gKiBAcHJvcGVydHkgSW5wdXRcbiAqIEBkZXNjcmlwdGlvblxuICogQSBsYWJlbCBmb3IgdGhlIGFkdWx0cyBwYXNzZW5nZXIgdHlwZS5cbiovXG4gIEBJbnB1dCgpIHlvdW5nQWR1bHRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgd2hlbiB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0ZWQgcGFzc2VuZ2VycyBleGNlZWRzIHRoZSBncm91cCBib29raW5nIGxpbWl0XG4gICovXG4gIEBJbnB1dCgpIGdyb3VwQm9va2luZ0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xHcm91cEJvb2tpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgc3VidHJhY3QgYnV0dG9ucy5cbiAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsU3VidHJhY3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgYWRkIGJ1dHRvbnMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxBZGQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgcGFzc2VuZ2Vyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8UGFzc2VuZ2Vyc01vZGVsPj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPblByZXZpb3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ25hcy1wYXNzZW5nZXItc2VsZWN0Jyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFRvdGFsQ291bnQoKTtcbiAgfVxuXG4gIGdldExhYmVsKHR5cGU6IFBhc3NlbmdlclR5cGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXNzZW5nZXJUeXBlLkFkdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5hZHVsdHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5DaGlsZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5MYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5JbmZhbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluZmFudHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5Zb3V0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMueW91dGhzTGFiZWw7XG4gICAgICBjYXNlIFBhc3NlbmdlclR5cGUuWW91bmdBZHVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMueW91bmdBZHVsdHNMYWJlbDtcbiAgICB9XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMucGFzc2VuZ2Vycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy5udW1iZXJGaWVsZHMuZmlyc3QuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubnVtYmVyRmllbGRzLnRvQXJyYXkoKVtpbmRleCArIDFdLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbdGhpcy5wYXNzZW5nZXJzLmxlbmd0aCAtIDFdLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbaW5kZXggLSAxXS5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzT25QcmV2aW91cy5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRQYXNzZW5nZXJzQ291bnQocGFzc2VuZ2VyczogUGFzc2VuZ2Vyc01vZGVsLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgcGFzc2VuZ2Vycy5jb3VudCA9IGNvdW50O1xuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCkge1xuICAgICAgaWYgKHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCkpIHtcbiAgICAgICAgY29uc3QgaW5mYW50c0NvdW50ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KS5jb3VudDtcbiAgICAgICAgaWYgKGluZmFudHNDb3VudCA+IHBhc3NlbmdlcnMuY291bnQgJiYgdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KSkge1xuICAgICAgICAgIGNvbnN0IGluZmFudCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCk7XG5cbiAgICAgICAgICBpZiAoaW5mYW50KSB7XG4gICAgICAgICAgICBpbmZhbnQuY291bnQgPSBwYXNzZW5nZXJzLmNvdW50O1xuXG4gICAgICAgICAgICBpZiAoaW5mYW50LmZvcm1Hcm91cCAmJiBpbmZhbnQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICAgIGluZmFudC5mb3JtR3JvdXAuZ2V0KGluZmFudC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoaW5mYW50LmNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeW91bmdBZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdW5nQWR1bHQpO1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5DaGlsZCk7XG4gICAgICBpZiAoeW91bmdBZHVsdCAmJiBjaGlsZCkge1xuICAgICAgICBpZiAoIHBhc3NlbmdlcnMuY291bnQgPT09IDAgJiYgY2hpbGQpIHtcblxuICAgICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgICAgY2hpbGQuY291bnQgPSAwO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGQuZm9ybUdyb3VwICYmIGNoaWxkLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgICBjaGlsZC5mb3JtR3JvdXAuZ2V0KGNoaWxkLmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKSB7XG4gICAgICBpZiAodGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KSkge1xuICAgICAgICBjb25zdCBpbmZhbnRzQ291bnQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpLmNvdW50O1xuICAgICAgICBpZiAoaW5mYW50c0NvdW50ID4gcGFzc2VuZ2Vycy5jb3VudCAmJiB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpKSB7XG4gICAgICAgICAgY29uc3QgaW5mYW50ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KTtcblxuICAgICAgICAgIGlmIChpbmZhbnQpIHtcbiAgICAgICAgICAgIGluZmFudC5jb3VudCA9IHBhc3NlbmdlcnMuY291bnQ7XG5cbiAgICAgICAgICAgIGlmIChpbmZhbnQuZm9ybUdyb3VwICYmIGluZmFudC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgICAgaW5mYW50LmZvcm1Hcm91cC5nZXQoaW5mYW50LmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZShpbmZhbnQuY291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQgfHwgcGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKSB7XG4gICAgICBjb25zdCBhZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KTtcbiAgICAgIGNvbnN0IHlvdXRoID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuXG4gICAgICBpZiAoYWR1bHQgJiYgeW91dGgpIHtcbiAgICAgICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiBhZHVsdC5jb3VudCA+IDApIHtcbiAgICAgICAgICBpZiAoeW91dGguZm9ybUdyb3VwICYmIHlvdXRoLmZvcm1Db250cm9sTmFtZSAmJiB5b3V0aC5jb3VudCAhPT0gMCkge1xuICAgICAgICAgICAgeW91dGguZm9ybUdyb3VwLmdldCh5b3V0aC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHlvdXRoLmNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpIHtcbiAgICAgICAgICBhZHVsdC5jb3VudCA9IHlvdXRoLmNvdW50ID4gMCA/IDAgOiBhZHVsdC5jb3VudDsgXG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGFkdWx0LmZvcm1Hcm91cCAmJiBhZHVsdC5mb3JtQ29udHJvbE5hbWUgJiYgeW91dGguZm9ybUdyb3VwICYmIHlvdXRoLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWluQWR1bHRDb3VudCAmJiB5b3V0aC5jb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICBhZHVsdC5mb3JtR3JvdXAuZ2V0KGFkdWx0LmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZSh0aGlzLm1pbkFkdWx0Q291bnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh5b3V0aC5jb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgYWR1bHQuZm9ybUdyb3VwLmdldChhZHVsdC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXRUb3RhbENvdW50KCk7XG4gICAgdGhpcy5wYXNzZW5nZXJzQ2hhbmdlLmVtaXQodGhpcy5wYXNzZW5nZXJzKTtcbiAgfVxuXG4gIGdldE1heChwYXNzZW5nZXJzOiBQYXNzZW5nZXJzTW9kZWwpOiBudW1iZXIge1xuICAgIGNvbnN0IGFkdWx0cyA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KTtcbiAgICBjb25zdCB5b3V0aHMgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3V0aCk7XG4gICAgY29uc3QgeW91bmdBZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdW5nQWR1bHQpO1xuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpIHtcbiAgICAgIGlmIChhZHVsdHMgJiYgYWR1bHRzLmNvdW50ID4gMCkge1xuICAgICAgICBpZiAoIWFkdWx0cy5mb3JtR3JvdXAgfHwgIWFkdWx0cy5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gYWR1bHRzLmNvdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWR1bHRzRm9ybUNvbnRyb2wgPSBhZHVsdHMuZm9ybUdyb3VwLmdldChhZHVsdHMuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIWFkdWx0c0Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgcmV0dXJuIGFkdWx0cy5jb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhZHVsdHNGb3JtQ29udHJvbC52YWx1ZSBhcyBudW1iZXI7XG4gICAgICB9IFxuICAgICAgXG4gICAgICBpZiAoeW91dGhzICYmIHlvdXRocy5jb3VudCA+IDApIHtcbiAgICAgICAgaWYgKCF5b3V0aHMuZm9ybUdyb3VwIHx8ICF5b3V0aHMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHlvdXRocy5jb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHlvdXRoc0Zvcm1Db250cm9sID0geW91dGhzLmZvcm1Hcm91cC5nZXQoeW91dGhzLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCF5b3V0aHNGb3JtQ29udHJvbCkge1xuICAgICAgICAgIHJldHVybiB5b3V0aHMuY291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geW91dGhzRm9ybUNvbnRyb2wudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoeW91bmdBZHVsdCAmJiAoYWR1bHRzICYmIGFkdWx0cy5jb3VudCA8PSAwKSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKHlvdW5nQWR1bHQgJiYgKHlvdXRocyAmJiB5b3V0aHMuY291bnQgPD0gMCkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAwO1xuXG4gICAgfSBlbHNlIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQ2hpbGQgJiYgdGhpcy50b3RhbENvdW50IDwgMTApIHsgXG4gICAgICBpZihhZHVsdHMgJiYgeW91bmdBZHVsdCkge1xuICAgICAgICBpZihhZHVsdHMuY291bnQgPD0gMCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZih5b3V0aHMgJiYgeW91bmdBZHVsdCkge1xuICAgICAgICBpZih5b3V0aHMuY291bnQgPD0gMCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnRvdGFsQ291bnQgPj0gdGhpcy5tYXhQYXhDb3VudCkge1xuXG4gICAgICBpZiAoIXBhc3NlbmdlcnMuZm9ybUdyb3VwIHx8ICFwYXNzZW5nZXJzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICByZXR1cm4gcGFzc2VuZ2Vycy5jb3VudDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFzc2VuZ2Vyc0Zvcm1Db250cm9sID0gcGFzc2VuZ2Vycy5mb3JtR3JvdXAuZ2V0KHBhc3NlbmdlcnMuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKCFwYXNzZW5nZXJzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuIHBhc3NlbmdlcnMuY291bnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXNzZW5nZXJzRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heFBheENvdW50O1xuICAgIH1cbiAgfVxuXG4gIGdldE1pbihwYXNzZW5nZXJzOiBQYXNzZW5nZXJzTW9kZWwpOiBudW1iZXIge1xuICAgIGNvbnN0IGFkdWx0ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpO1xuICAgIGNvbnN0IHlvdXRoID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuICAgIGNvbnN0IHlvdW5nQWR1bHQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3VuZ0FkdWx0KTtcblxuICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQgJiYgeW91dGgpIHtcbiAgICAgIGNvbnN0IG1pbiA9ICF0aGlzLm1pbkFkdWx0Q291bnQgPyAwIDogdGhpcy5taW5BZHVsdENvdW50O1xuICAgICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiBhZHVsdC5jb3VudCA8IG1pbiAmJiB5b3V0aC5jb3VudCA9PT0gMCkge1xuICAgICAgICBwYXNzZW5nZXJzLmNvdW50ID0gbWluO1xuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiBhZHVsdC5mb3JtR3JvdXAgJiYgYWR1bHQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWR1bHQgJiYgcGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKSB7XG4gICAgICBjb25zdCBtaW4gPSAhdGhpcy5taW5BZHVsdENvdW50ID8gMCA6IHRoaXMubWluQWR1bHRDb3VudDtcbiAgICAgIHJldHVybiBtaW47XG4gICAgfSBlbHNlIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQgJiYgeW91bmdBZHVsdCkge1xuICAgICAgaWYoeW91bmdBZHVsdC5jb3VudCA+IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5taW5BZHVsdENvdW50O1xuICAgIH0gZWxzZSBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdW5nQWR1bHQgJiYgYWR1bHQpIHtcbiAgICAgIGlmKGFkdWx0LmNvdW50ID4gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1pbkFkdWx0Q291bnQ7XG4gICAgfSAgZWxzZSBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KSB7XG4gICAgICByZXR1cm4gdGhpcy5taW5BZHVsdENvdW50O1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUb3RhbENvdW50KCkge1xuICAgIGNvbnN0IGFkdWx0ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpO1xuICAgIGNvbnN0IHlvdXRoID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuICAgIGNvbnN0IHlvdW5nQWR1bHQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3VuZ0FkdWx0KTtcbiAgICBjb25zdCBjaGlsZCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkNoaWxkKTtcblxuICAgIGxldCBhZHVsdENvdW50ID0gMDtcbiAgICBsZXQgeW91dGhDb3VudCA9IDA7XG4gICAgbGV0IHlvdW5nQWR1bHRDb3VudCA9IDA7XG4gICAgbGV0IGNoaWxkQ291bnQgPSAwO1xuXG4gICAgaWYgKGFkdWx0KSB7XG5cbiAgICAgIGlmICghYWR1bHQuZm9ybUdyb3VwIHx8ICFhZHVsdC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgYWR1bHRDb3VudCA9IGFkdWx0LmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWR1bHRzQ29udHJvbCA9IGFkdWx0LmZvcm1Hcm91cC5nZXQoYWR1bHQuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIWFkdWx0c0NvbnRyb2wpIHtcbiAgICAgICAgICBhZHVsdENvdW50ID0gYWR1bHQuY291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWR1bHRDb3VudCA9IGFkdWx0c0NvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoeW91dGgpIHtcbiAgICAgIGlmICgheW91dGguZm9ybUdyb3VwIHx8ICF5b3V0aC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgeW91dGhDb3VudCA9IHlvdXRoLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeW91dGhzQ29udHJvbCA9IHlvdXRoLmZvcm1Hcm91cC5nZXQoeW91dGguZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIXlvdXRoc0NvbnRyb2wpIHtcbiAgICAgICAgICB5b3V0aENvdW50ID0geW91dGguY291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeW91dGhDb3VudCA9IHlvdXRoc0NvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoeW91bmdBZHVsdCkge1xuICAgICAgaWYgKCF5b3VuZ0FkdWx0LmZvcm1Hcm91cCB8fCAheW91bmdBZHVsdC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgeW91bmdBZHVsdENvdW50ID0geW91bmdBZHVsdC5jb3VudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHlvdW5nQWR1bHRzQ29udHJvbCA9IHlvdW5nQWR1bHQuZm9ybUdyb3VwLmdldCh5b3VuZ0FkdWx0LmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCF5b3VuZ0FkdWx0c0NvbnRyb2wpIHtcbiAgICAgICAgICB5b3VuZ0FkdWx0Q291bnQgPSB5b3VuZ0FkdWx0LmNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHlvdW5nQWR1bHRDb3VudCA9IHlvdW5nQWR1bHRzQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGlsZCkge1xuICAgICAgaWYgKCFjaGlsZC5mb3JtR3JvdXAgfHwgIWNoaWxkLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICBjaGlsZENvdW50ID0gY2hpbGQuY291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjaGlsZHNDb250cm9sID0gY2hpbGQuZm9ybUdyb3VwLmdldChjaGlsZC5mb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICAgIGlmICghY2hpbGRzQ29udHJvbCkge1xuICAgICAgICAgIGNoaWxkQ291bnQgPSBjaGlsZC5jb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGlsZENvdW50ID0gY2hpbGRzQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudG90YWxDb3VudCA9IGFkdWx0Q291bnQgKyBjaGlsZENvdW50ICsgeW91dGhDb3VudCArIHlvdW5nQWR1bHRDb3VudDtcblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sR3JvdXBCb29raW5nKSB7XG4gICAgICBjb25zdCBncm91cEJvb2tpbmdDb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xHcm91cEJvb2tpbmcpO1xuXG4gICAgICB0aGlzLmlzR3JvdXBCb29raW5nID0gdGhpcy50b3RhbENvdW50ID49IHRoaXMuZ3JvdXBCb29raW5nTGltaXQ7XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwQm9va2luZ0xpbWl0IDwgMSkge1xuICAgICAgICB0aGlzLmlzR3JvdXBCb29raW5nID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChncm91cEJvb2tpbmdDb250cm9sLnZhbHVlICE9PSB0aGlzLmlzR3JvdXBCb29raW5nKSB7XG4gICAgICAgIGdyb3VwQm9va2luZ0NvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLmlzR3JvdXBCb29raW5nKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZ3JvdXBCb29raW5nTGltaXQpIHtcbiAgICAgIHRoaXMuaXNHcm91cEJvb2tpbmcgPSB0aGlzLnRvdGFsQ291bnQgPj0gdGhpcy5ncm91cEJvb2tpbmdMaW1pdDtcbiAgICB9XG5cbiAgfVxuXG59XG4iLCI8aDIgKm5nSWY9XCJ0aXRsZVwiXG4gIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnLCBpc0dyb3VwQm9va2luZyAmJiAnZ3JvdXAtYm9va2luZycpXCI+e3t0aXRsZX19PG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXBCb29raW5nXCI+OlxuICAgIDxkaXY+e3tncm91cEJvb2tpbmdMYWJlbH19PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9oMj5cbjx1bCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xpc3QnKVwiPlxuICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFzc2VuZ2VyczsgaW5kZXggYXMgY291bnRcIlxuICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGlzdC1pdGVtJylcIj5cbiAgICA8bGFiZWwgW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFiZWwoaXRlbS50eXBlKVwiPnt7Z2V0TGFiZWwoaXRlbS50eXBlKX19PC9sYWJlbD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uZm9ybUdyb3VwIHx8ICFpdGVtLmZvcm1Db250cm9sTmFtZTsgZWxzZSByZWFjdGl2ZUZvcm1cIj5cbiAgICAgIDxuYXMtbnVtYmVyLWZpZWxkIGNvbXBhY3RcbiAgICAgICAgc3BhY2VsZXNzXG4gICAgICAgIHNpbXBsZVxuICAgICAgICBbYXJpYUxhYmVsXT1cImdldExhYmVsKGl0ZW0udHlwZSlcIlxuICAgICAgICBbYXJpYUxhYmVsU3VidHJhY3RdPVwiYXJpYUxhYmVsU3VidHJhY3RcIlxuICAgICAgICBbYXJpYUxhYmVsQWRkXT1cImFyaWFMYWJlbEFkZFwiXG4gICAgICAgIFtudW1iZXJdPVwiaXRlbS5jb3VudFwiXG4gICAgICAgIFttYXhdPVwiZ2V0TWF4KGl0ZW0pXCJcbiAgICAgICAgW21pbl09XCJnZXRNaW4oaXRlbSlcIlxuICAgICAgICAobnVtYmVyQ2hhbmdlKT1cInNldFBhc3NlbmdlcnNDb3VudChpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwia2V5RG93bigkZXZlbnQsIGNvdW50KVwiPjwvbmFzLW51bWJlci1maWVsZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3JlYWN0aXZlRm9ybT5cbiAgICAgIDxuYXMtbnVtYmVyLWZpZWxkIGNvbXBhY3RcbiAgICAgICAgc3BhY2VsZXNzXG4gICAgICAgIHNpbXBsZVxuICAgICAgICBbYXJpYUxhYmVsXT1cImdldExhYmVsKGl0ZW0udHlwZSlcIlxuICAgICAgICBbYXJpYUxhYmVsU3VidHJhY3RdPVwiYXJpYUxhYmVsU3VidHJhY3RcIlxuICAgICAgICBbYXJpYUxhYmVsQWRkXT1cImFyaWFMYWJlbEFkZFwiXG4gICAgICAgIFtuYXNGb3JtR3JvdXBdPVwiaXRlbS5mb3JtR3JvdXBcIlxuICAgICAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0uZm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgW251bWJlcl09XCJpdGVtLmZvcm1Hcm91cD8uZ2V0KGl0ZW0uZm9ybUNvbnRyb2xOYW1lKT8udmFsdWVcIlxuICAgICAgICBbbWF4XT1cImdldE1heChpdGVtKVwiXG4gICAgICAgIFttaW5dPVwiZ2V0TWluKGl0ZW0pXCJcbiAgICAgICAgKGtleWRvd24pPVwia2V5RG93bigkZXZlbnQsIGNvdW50KVwiXG4gICAgICAgIChudW1iZXJDaGFuZ2UpPVwic2V0UGFzc2VuZ2Vyc0NvdW50KGl0ZW0sICRldmVudClcIj48L25hcy1udW1iZXItZmllbGQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9saT5cbjwvdWw+Il19
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBRTlFOzs7RUFHRTtBQU1GLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUF1STVEO1FBQ0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFsSWhDOzs7O1VBSUU7UUFDTyxlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUF1R25EOzs7O1VBSUU7UUFDUSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV4RTs7OztVQUlFO1FBQ1EsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhEOzs7O1VBSUU7UUFDUSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFJcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFD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QUF6QixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFTRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZHJlbixcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFzc2VuZ2VyVHlwZSB9IGZyb20gJy4vZW51bXMvcGFzc2VuZ2VyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXNzZW5nZXJzTW9kZWwgfSBmcm9tICcuL21vZGVscy9wYXNzZW5nZXJzLm1vZGVsJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IE51bWJlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFBhc3NlbmdlciBTZWxlY3QgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1wYXNzZW5nZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3Nlbmdlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzZW5nZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFzc2VuZ2VyU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oTnVtYmVyRmllbGRDb21wb25lbnQpIG51bWJlckZpZWxkcyE6IFF1ZXJ5TGlzdDxOdW1iZXJGaWVsZENvbXBvbmVudD47XG5cbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICBpc0dyb3VwQm9va2luZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBkaWZmZXJlbnQgcGFzc2VuZ2VyIHR5cGVzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICovXG4gIEBJbnB1dCgpIHBhc3NlbmdlcnMgPSBuZXcgQXJyYXk8UGFzc2VuZ2Vyc01vZGVsPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0b3RhbCBtYXhpbXVtIGFtb3VudCBvZiBwYXNzZW5nZXJzLlxuICAqL1xuICBASW5wdXQoKSBtYXhQYXhDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBhZHVsdHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQuXG4gICovXG4gIEBJbnB1dCgpIG1pbkFkdWx0Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbGltaXQgZm9yIHdoZW4gdGhlIHRvdGFsIGFtb3VudCBvZiBwYXNzZW5nZXJzIGV4Y2VlZHMgdG8gYmUgYSBncm91cCBib29raW5nLlxuICAqL1xuICBASW5wdXQoKSBncm91cEJvb2tpbmdMaW1pdDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGl0bGUgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBkcm9wZG93bi5cbiAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIGZvciB0aGUgYWR1bHRzIHBhc3NlbmdlciB0eXBlLlxuICAqL1xuICBASW5wdXQoKSBhZHVsdHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgZm9yIHRoZSBjaGlsZHJlbiBwYXNzZW5nZXIgdHlwZS5cbiAgKi9cbiAgQElucHV0KCkgY2hpbGRyZW5MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCBmb3IgdGhlIGluZmFudHMgcGFzc2VuZ2VyIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBpbmZhbnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAqIEBwcm9wZXJ0eSBJbnB1dFxuICogQGRlc2NyaXB0aW9uXG4gKiBBIGxhYmVsIGZvciB0aGUgYWR1bHRzIHBhc3NlbmdlciB0eXBlLlxuKi9cbiAgQElucHV0KCkgeW91dGhzTGFiZWw6IHN0cmluZztcblxuLyoqXG4gKiBAcHJvcGVydHkgSW5wdXRcbiAqIEBkZXNjcmlwdGlvblxuICogQSBsYWJlbCBmb3IgdGhlIGFkdWx0cyBwYXNzZW5nZXIgdHlwZS5cbiovXG4gIEBJbnB1dCgpIHlvdW5nQWR1bHRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgd2hlbiB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0ZWQgcGFzc2VuZ2VycyBleGNlZWRzIHRoZSBncm91cCBib29raW5nIGxpbWl0XG4gICovXG4gIEBJbnB1dCgpIGdyb3VwQm9va2luZ0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xHcm91cEJvb2tpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgc3VidHJhY3QgYnV0dG9ucy5cbiAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsU3VidHJhY3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgYWRkIGJ1dHRvbnMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxBZGQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgcGFzc2VuZ2Vyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8UGFzc2VuZ2Vyc01vZGVsPj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPblByZXZpb3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ25hcy1wYXNzZW5nZXItc2VsZWN0Jyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFRvdGFsQ291bnQoKTtcbiAgfVxuXG4gIGdldExhYmVsKHR5cGU6IFBhc3NlbmdlclR5cGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXNzZW5nZXJUeXBlLkFkdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5hZHVsdHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5DaGlsZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5MYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5JbmZhbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluZmFudHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5Zb3V0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMueW91dGhzTGFiZWw7XG4gICAgICBjYXNlIFBhc3NlbmdlclR5cGUuWW91bmdBZHVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMueW91bmdBZHVsdHNMYWJlbDtcbiAgICB9XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMucGFzc2VuZ2Vycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy5udW1iZXJGaWVsZHMuZmlyc3QuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubnVtYmVyRmllbGRzLnRvQXJyYXkoKVtpbmRleCArIDFdLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbdGhpcy5wYXNzZW5nZXJzLmxlbmd0aCAtIDFdLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbaW5kZXggLSAxXS5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzT25QcmV2aW91cy5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRQYXNzZW5nZXJzQ291bnQocGFzc2VuZ2VyczogUGFzc2VuZ2Vyc01vZGVsLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgcGFzc2VuZ2Vycy5jb3VudCA9IGNvdW50O1xuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCkge1xuICAgICAgaWYgKHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCkpIHtcbiAgICAgICAgY29uc3QgaW5mYW50c0NvdW50ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KS5jb3VudDtcbiAgICAgICAgaWYgKGluZmFudHNDb3VudCA+IHBhc3NlbmdlcnMuY291bnQgJiYgdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KSkge1xuICAgICAgICAgIGNvbnN0IGluZmFudCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCk7XG5cbiAgICAgICAgICBpZiAoaW5mYW50KSB7XG4gICAgICAgICAgICBpbmZhbnQuY291bnQgPSBwYXNzZW5nZXJzLmNvdW50O1xuXG4gICAgICAgICAgICBpZiAoaW5mYW50LmZvcm1Hcm91cCAmJiBpbmZhbnQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICAgIGluZmFudC5mb3JtR3JvdXAuZ2V0KGluZmFudC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoaW5mYW50LmNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeW91bmdBZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdW5nQWR1bHQpO1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5DaGlsZCk7XG4gICAgICBpZiAoeW91bmdBZHVsdCAmJiBjaGlsZCkge1xuICAgICAgICBpZiAoIHBhc3NlbmdlcnMuY291bnQgPT09IDAgJiYgY2hpbGQpIHtcblxuICAgICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgICAgY2hpbGQuY291bnQgPSAwO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGQuZm9ybUdyb3VwICYmIGNoaWxkLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgICBjaGlsZC5mb3JtR3JvdXAuZ2V0KGNoaWxkLmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKSB7XG4gICAgICBpZiAodGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KSkge1xuICAgICAgICBjb25zdCBpbmZhbnRzQ291bnQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpLmNvdW50O1xuICAgICAgICBpZiAoaW5mYW50c0NvdW50ID4gcGFzc2VuZ2Vycy5jb3VudCAmJiB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpKSB7XG4gICAgICAgICAgY29uc3QgaW5mYW50ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KTtcblxuICAgICAgICAgIGlmIChpbmZhbnQpIHtcbiAgICAgICAgICAgIGluZmFudC5jb3VudCA9IHBhc3NlbmdlcnMuY291bnQ7XG5cbiAgICAgICAgICAgIGlmIChpbmZhbnQuZm9ybUdyb3VwICYmIGluZmFudC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgICAgaW5mYW50LmZvcm1Hcm91cC5nZXQoaW5mYW50LmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZShpbmZhbnQuY291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQgfHwgcGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKSB7XG4gICAgICBjb25zdCBhZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KTtcbiAgICAgIGNvbnN0IHlvdXRoID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuXG4gICAgICBpZiAoYWR1bHQgJiYgeW91dGgpIHtcbiAgICAgICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiBhZHVsdC5jb3VudCA+IDApIHtcbiAgICAgICAgICBpZiAoeW91dGguZm9ybUdyb3VwICYmIHlvdXRoLmZvcm1Db250cm9sTmFtZSAmJiB5b3V0aC5jb3VudCAhPT0gMCkge1xuICAgICAgICAgICAgeW91dGguZm9ybUdyb3VwLmdldCh5b3V0aC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHlvdXRoLmNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpIHtcbiAgICAgICAgICBhZHVsdC5jb3VudCA9IHlvdXRoLmNvdW50ID4gMCA/IDAgOiBhZHVsdC5jb3VudDsgXG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGFkdWx0LmZvcm1Hcm91cCAmJiBhZHVsdC5mb3JtQ29udHJvbE5hbWUgJiYgeW91dGguZm9ybUdyb3VwICYmIHlvdXRoLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWluQWR1bHRDb3VudCAmJiB5b3V0aC5jb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICBhZHVsdC5mb3JtR3JvdXAuZ2V0KGFkdWx0LmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZSh0aGlzLm1pbkFkdWx0Q291bnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh5b3V0aC5jb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgYWR1bHQuZm9ybUdyb3VwLmdldChhZHVsdC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3VuZ0FkdWx0IHx8IHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3V0aCkge1xuICAgICAgY29uc3QgeW91bmdBZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdW5nQWR1bHQpO1xuICAgICAgY29uc3QgeW91dGggPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3V0aCk7XG5cbiAgICAgIGlmICh5b3VuZ0FkdWx0ICYmIHlvdXRoKSB7XG4gICAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGggJiYgeW91dGguY291bnQgPiAwKSB7XG4gICAgICAgICAgaWYgKHlvdW5nQWR1bHQuZm9ybUdyb3VwICYmIHlvdXRoLmZvcm1Db250cm9sTmFtZSAmJiB5b3VuZ0FkdWx0LmNvdW50ICE9PSAwKSB7XG4gICAgICAgICAgICB5b3VuZ0FkdWx0LmZvcm1Hcm91cC5nZXQoeW91dGguZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB5b3VuZ0FkdWx0LmNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91bmdBZHVsdCkge1xuICAgICAgICAgIHlvdXRoLmNvdW50ID0geW91bmdBZHVsdC5jb3VudCA+IDAgPyAwIDogeW91dGguY291bnQ7IFxuICAgICAgICAgIFxuICAgICAgICAgIGlmICh5b3V0aC5mb3JtR3JvdXAgJiYgeW91dGguZm9ybUNvbnRyb2xOYW1lICYmIHlvdW5nQWR1bHQuZm9ybUdyb3VwICYmIHlvdW5nQWR1bHQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5taW5BZHVsdENvdW50ICYmIHlvdW5nQWR1bHQuY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgeW91dGguZm9ybUdyb3VwLmdldCh5b3V0aC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUodGhpcy5taW5BZHVsdENvdW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeW91dGguY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgIHlvdXRoLmZvcm1Hcm91cC5nZXQoeW91dGguZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0VG90YWxDb3VudCgpO1xuICAgIHRoaXMucGFzc2VuZ2Vyc0NoYW5nZS5lbWl0KHRoaXMucGFzc2VuZ2Vycyk7XG4gIH1cblxuICBnZXRNYXgocGFzc2VuZ2VyczogUGFzc2VuZ2Vyc01vZGVsKTogbnVtYmVyIHtcbiAgICBjb25zdCBhZHVsdHMgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCk7XG4gICAgY29uc3QgeW91dGhzID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuICAgIGNvbnN0IHlvdW5nQWR1bHQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3VuZ0FkdWx0KTtcblxuICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KSB7XG4gICAgICBpZiAoYWR1bHRzICYmIGFkdWx0cy5jb3VudCA+IDApIHtcbiAgICAgICAgaWYgKCFhZHVsdHMuZm9ybUdyb3VwIHx8ICFhZHVsdHMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGFkdWx0cy5jb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkdWx0c0Zvcm1Db250cm9sID0gYWR1bHRzLmZvcm1Hcm91cC5nZXQoYWR1bHRzLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCFhZHVsdHNGb3JtQ29udHJvbCkge1xuICAgICAgICAgIHJldHVybiBhZHVsdHMuY291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWR1bHRzRm9ybUNvbnRyb2wudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgfSBcbiAgICAgIFxuICAgICAgaWYgKHlvdXRocyAmJiB5b3V0aHMuY291bnQgPiAwKSB7XG4gICAgICAgIGlmICgheW91dGhzLmZvcm1Hcm91cCB8fCAheW91dGhzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgIHJldHVybiB5b3V0aHMuY291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB5b3V0aHNGb3JtQ29udHJvbCA9IHlvdXRocy5mb3JtR3JvdXAuZ2V0KHlvdXRocy5mb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICAgIGlmICgheW91dGhzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICByZXR1cm4geW91dGhzLmNvdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHlvdXRoc0Zvcm1Db250cm9sLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKHlvdW5nQWR1bHQgJiYgKGFkdWx0cyAmJiBhZHVsdHMuY291bnQgPD0gMCkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIGlmICh5b3VuZ0FkdWx0ICYmICh5b3V0aHMgJiYgeW91dGhzLmNvdW50IDw9IDApKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gMDtcblxuICAgIH0gZWxzZSBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLkNoaWxkICYmIHRoaXMudG90YWxDb3VudCA8IDEwKSB7IFxuICAgICAgaWYoYWR1bHRzICYmIHlvdW5nQWR1bHQpIHtcbiAgICAgICAgaWYoYWR1bHRzLmNvdW50IDw9IDApIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoeW91dGhzICYmIHlvdW5nQWR1bHQpIHtcbiAgICAgICAgaWYoeW91dGhzLmNvdW50IDw9IDApIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50b3RhbENvdW50ID49IHRoaXMubWF4UGF4Q291bnQpIHtcblxuICAgICAgaWYgKCFwYXNzZW5nZXJzLmZvcm1Hcm91cCB8fCAhcGFzc2VuZ2Vycy5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHBhc3NlbmdlcnMuY291bnQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhc3NlbmdlcnNGb3JtQ29udHJvbCA9IHBhc3NlbmdlcnMuZm9ybUdyb3VwLmdldChwYXNzZW5nZXJzLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgIGlmICghcGFzc2VuZ2Vyc0Zvcm1Db250cm9sKSB7XG4gICAgICAgIHJldHVybiBwYXNzZW5nZXJzLmNvdW50O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFzc2VuZ2Vyc0Zvcm1Db250cm9sLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXhQYXhDb3VudDtcbiAgICB9XG4gIH1cblxuICBnZXRNaW4ocGFzc2VuZ2VyczogUGFzc2VuZ2Vyc01vZGVsKTogbnVtYmVyIHtcbiAgICBjb25zdCBhZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KTtcbiAgICBjb25zdCB5b3V0aCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKTtcbiAgICBjb25zdCB5b3VuZ0FkdWx0ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91bmdBZHVsdCk7XG5cbiAgICBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0ICYmIHlvdXRoKSB7XG4gICAgICBjb25zdCBtaW4gPSAhdGhpcy5taW5BZHVsdENvdW50ID8gMCA6IHRoaXMubWluQWR1bHRDb3VudDtcbiAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQgJiYgYWR1bHQuY291bnQgPCBtaW4gJiYgeW91dGguY291bnQgPT09IDApIHtcbiAgICAgICAgcGFzc2VuZ2Vycy5jb3VudCA9IG1pbjtcbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQgJiYgYWR1bHQuZm9ybUdyb3VwICYmIGFkdWx0LmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoICYmIHlvdW5nQWR1bHQpIHtcbiAgICAgIGNvbnN0IG1pbiA9ICF0aGlzLm1pbkFkdWx0Q291bnQgPyAwIDogdGhpcy5taW5BZHVsdENvdW50O1xuICAgICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3V0aCAmJiB5b3V0aC5jb3VudCA8IG1pbiAmJiB5b3VuZ0FkdWx0LmNvdW50ID09PSAwKSB7XG4gICAgICAgIHBhc3NlbmdlcnMuY291bnQgPSBtaW47XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoICYmIHlvdXRoLmZvcm1Hcm91cCAmJiB5b3V0aC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFhZHVsdCAmJiBwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpIHtcbiAgICAgIGNvbnN0IG1pbiA9ICF0aGlzLm1pbkFkdWx0Q291bnQgPyAwIDogdGhpcy5taW5BZHVsdENvdW50O1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9IGVsc2UgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiB5b3VuZ0FkdWx0KSB7XG4gICAgICBpZih5b3VuZ0FkdWx0LmNvdW50ID4gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1pbkFkdWx0Q291bnQ7XG4gICAgfSBlbHNlIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91bmdBZHVsdCAmJiBhZHVsdCkge1xuICAgICAgaWYoYWR1bHQuY291bnQgPiAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWluQWR1bHRDb3VudDtcbiAgICB9ICBlbHNlIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLm1pbkFkdWx0Q291bnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIHNldFRvdGFsQ291bnQoKSB7XG4gICAgY29uc3QgYWR1bHQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCk7XG4gICAgY29uc3QgeW91dGggPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3V0aCk7XG4gICAgY29uc3QgeW91bmdBZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdW5nQWR1bHQpO1xuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQ2hpbGQpO1xuXG4gICAgbGV0IGFkdWx0Q291bnQgPSAwO1xuICAgIGxldCB5b3V0aENvdW50ID0gMDtcbiAgICBsZXQgeW91bmdBZHVsdENvdW50ID0gMDtcbiAgICBsZXQgY2hpbGRDb3VudCA9IDA7XG5cbiAgICBpZiAoYWR1bHQpIHtcblxuICAgICAgaWYgKCFhZHVsdC5mb3JtR3JvdXAgfHwgIWFkdWx0LmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICBhZHVsdENvdW50ID0gYWR1bHQuY291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhZHVsdHNDb250cm9sID0gYWR1bHQuZm9ybUdyb3VwLmdldChhZHVsdC5mb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICAgIGlmICghYWR1bHRzQ29udHJvbCkge1xuICAgICAgICAgIGFkdWx0Q291bnQgPSBhZHVsdC5jb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZHVsdENvdW50ID0gYWR1bHRzQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh5b3V0aCkge1xuICAgICAgaWYgKCF5b3V0aC5mb3JtR3JvdXAgfHwgIXlvdXRoLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICB5b3V0aENvdW50ID0geW91dGguY291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB5b3V0aHNDb250cm9sID0geW91dGguZm9ybUdyb3VwLmdldCh5b3V0aC5mb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICAgIGlmICgheW91dGhzQ29udHJvbCkge1xuICAgICAgICAgIHlvdXRoQ291bnQgPSB5b3V0aC5jb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB5b3V0aENvdW50ID0geW91dGhzQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh5b3VuZ0FkdWx0KSB7XG4gICAgICBpZiAoIXlvdW5nQWR1bHQuZm9ybUdyb3VwIHx8ICF5b3VuZ0FkdWx0LmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICB5b3VuZ0FkdWx0Q291bnQgPSB5b3VuZ0FkdWx0LmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeW91bmdBZHVsdHNDb250cm9sID0geW91bmdBZHVsdC5mb3JtR3JvdXAuZ2V0KHlvdW5nQWR1bHQuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIXlvdW5nQWR1bHRzQ29udHJvbCkge1xuICAgICAgICAgIHlvdW5nQWR1bHRDb3VudCA9IHlvdW5nQWR1bHQuY291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeW91bmdBZHVsdENvdW50ID0geW91bmdBZHVsdHNDb250cm9sLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkKSB7XG4gICAgICBpZiAoIWNoaWxkLmZvcm1Hcm91cCB8fCAhY2hpbGQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIGNoaWxkQ291bnQgPSBjaGlsZC5jb3VudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNoaWxkc0NvbnRyb2wgPSBjaGlsZC5mb3JtR3JvdXAuZ2V0KGNoaWxkLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCFjaGlsZHNDb250cm9sKSB7XG4gICAgICAgICAgY2hpbGRDb3VudCA9IGNoaWxkLmNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoaWxkQ291bnQgPSBjaGlsZHNDb250cm9sLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50b3RhbENvdW50ID0gYWR1bHRDb3VudCArIGNoaWxkQ291bnQgKyB5b3V0aENvdW50ICsgeW91bmdBZHVsdENvdW50O1xuXG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xHcm91cEJvb2tpbmcpIHtcbiAgICAgIGNvbnN0IGdyb3VwQm9va2luZ0NvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbEdyb3VwQm9va2luZyk7XG5cbiAgICAgIHRoaXMuaXNHcm91cEJvb2tpbmcgPSB0aGlzLnRvdGFsQ291bnQgPj0gdGhpcy5ncm91cEJvb2tpbmdMaW1pdDtcblxuICAgICAgaWYgKHRoaXMuZ3JvdXBCb29raW5nTGltaXQgPCAxKSB7XG4gICAgICAgIHRoaXMuaXNHcm91cEJvb2tpbmcgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdyb3VwQm9va2luZ0NvbnRyb2wudmFsdWUgIT09IHRoaXMuaXNHcm91cEJvb2tpbmcpIHtcbiAgICAgICAgZ3JvdXBCb29raW5nQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuaXNHcm91cEJvb2tpbmcpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5ncm91cEJvb2tpbmdMaW1pdCkge1xuICAgICAgdGhpcy5pc0dyb3VwQm9va2luZyA9IHRoaXMudG90YWxDb3VudCA+PSB0aGlzLmdyb3VwQm9va2luZ0xpbWl0O1xuICAgIH1cblxuICB9XG5cbn1cbiIsIjxoMiAqbmdJZj1cInRpdGxlXCJcbiAgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScsIGlzR3JvdXBCb29raW5nICYmICdncm91cC1ib29raW5nJylcIj57e3RpdGxlfX08bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cEJvb2tpbmdcIj46XG4gICAgPGRpdj57e2dyb3VwQm9va2luZ0xhYmVsfX08L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2gyPlxuPHVsIFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGlzdCcpXCI+XG4gIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYXNzZW5nZXJzOyBpbmRleCBhcyBjb3VudFwiXG4gICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdsaXN0LWl0ZW0nKVwiPlxuICAgIDxsYWJlbCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJylcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYWJlbChpdGVtLnR5cGUpXCI+e3tnZXRMYWJlbChpdGVtLnR5cGUpfX08L2xhYmVsPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5mb3JtR3JvdXAgfHwgIWl0ZW0uZm9ybUNvbnRyb2xOYW1lOyBlbHNlIHJlYWN0aXZlRm9ybVwiPlxuICAgICAgPG5hcy1udW1iZXItZmllbGQgY29tcGFjdFxuICAgICAgICBzcGFjZWxlc3NcbiAgICAgICAgc2ltcGxlXG4gICAgICAgIFthcmlhTGFiZWxdPVwiZ2V0TGFiZWwoaXRlbS50eXBlKVwiXG4gICAgICAgIFthcmlhTGFiZWxTdWJ0cmFjdF09XCJhcmlhTGFiZWxTdWJ0cmFjdFwiXG4gICAgICAgIFthcmlhTGFiZWxBZGRdPVwiYXJpYUxhYmVsQWRkXCJcbiAgICAgICAgW251bWJlcl09XCJpdGVtLmNvdW50XCJcbiAgICAgICAgW21heF09XCJnZXRNYXgoaXRlbSlcIlxuICAgICAgICBbbWluXT1cImdldE1pbihpdGVtKVwiXG4gICAgICAgIChudW1iZXJDaGFuZ2UpPVwic2V0UGFzc2VuZ2Vyc0NvdW50KGl0ZW0sICRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudCwgY291bnQpXCI+PC9uYXMtbnVtYmVyLWZpZWxkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVhY3RpdmVGb3JtPlxuICAgICAgPG5hcy1udW1iZXItZmllbGQgY29tcGFjdFxuICAgICAgICBzcGFjZWxlc3NcbiAgICAgICAgc2ltcGxlXG4gICAgICAgIFthcmlhTGFiZWxdPVwiZ2V0TGFiZWwoaXRlbS50eXBlKVwiXG4gICAgICAgIFthcmlhTGFiZWxTdWJ0cmFjdF09XCJhcmlhTGFiZWxTdWJ0cmFjdFwiXG4gICAgICAgIFthcmlhTGFiZWxBZGRdPVwiYXJpYUxhYmVsQWRkXCJcbiAgICAgICAgW25hc0Zvcm1Hcm91cF09XCJpdGVtLmZvcm1Hcm91cFwiXG4gICAgICAgIFtuYXNGb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5mb3JtQ29udHJvbE5hbWVcIlxuICAgICAgICBbbnVtYmVyXT1cIml0ZW0uZm9ybUdyb3VwPy5nZXQoaXRlbS5mb3JtQ29udHJvbE5hbWUpPy52YWx1ZVwiXG4gICAgICAgIFttYXhdPVwiZ2V0TWF4KGl0ZW0pXCJcbiAgICAgICAgW21pbl09XCJnZXRNaW4oaXRlbSlcIlxuICAgICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudCwgY291bnQpXCJcbiAgICAgICAgKG51bWJlckNoYW5nZSk9XCJzZXRQYXNzZW5nZXJzQ291bnQoaXRlbSwgJGV2ZW50KVwiPjwvbmFzLW51bWJlci1maWVsZD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2xpPlxuPC91bD4iXX0=