@magicx-eng/ai-autocomplete-angular 0.34.0 → 0.35.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.
- package/README.md +7 -1
- package/esm2020/lib/ai-autocomplete/ai-autocomplete.component.mjs +3 -3
- package/esm2020/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.mjs +36 -4
- package/esm2020/lib/internal/suggestion-item/suggestion-item.component.mjs +3 -3
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs +41 -8
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs +39 -7
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts +11 -3
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -152,10 +152,10 @@ export class SuggestionItemComponent {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
SuggestionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuggestionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
155
|
-
SuggestionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SuggestionItemComponent, isStandalone: true, selector: "aia-suggestion-item", inputs: { option: "option", isHighlighted: "isHighlighted", id: "id", loading: "loading", showIcon: "showIcon", showImage: "showImage", showCount: "showCount", scrollHint: "scrollHint", enterDelayMs: "enterDelayMs" }, outputs: { select: "select", highlight: "highlight", unhighlight: "unhighlight" }, ngImport: i0, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill under the picture, so a slow or\n failed load leaves a neutral square rather than a gap. The picture is\n decorative: the text is the option's accessible name. -->\n <span *ngIf=\"imageSrc as src\" class=\"aia-suggestion-image\" aria-hidden=\"true\">\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\">{{ label }}</span>\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image img{display:block;width:100%;height:100%;object-fit:cover}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
155
|
+
SuggestionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SuggestionItemComponent, isStandalone: true, selector: "aia-suggestion-item", inputs: { option: "option", isHighlighted: "isHighlighted", id: "id", loading: "loading", showIcon: "showIcon", showImage: "showImage", showCount: "showCount", scrollHint: "scrollHint", enterDelayMs: "enterDelayMs" }, outputs: { select: "select", highlight: "highlight", unhighlight: "unhighlight" }, ngImport: i0, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill under the picture, so a slow or\n failed load leaves a neutral square rather than a gap. The picture is\n decorative: the text is the option's accessible name. -->\n <span *ngIf=\"imageSrc as src\" class=\"aia-suggestion-image\" aria-hidden=\"true\">\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\">{{ label }}</span>\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}[data-aia-fit] .aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:none}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image img{display:block;width:100%;height:100%;object-fit:cover}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
156
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuggestionItemComponent, decorators: [{
|
|
157
157
|
type: Component,
|
|
158
|
-
args: [{ selector: "aia-suggestion-item", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill under the picture, so a slow or\n failed load leaves a neutral square rather than a gap. The picture is\n decorative: the text is the option's accessible name. -->\n <span *ngIf=\"imageSrc as src\" class=\"aia-suggestion-image\" aria-hidden=\"true\">\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\">{{ label }}</span>\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image img{display:block;width:100%;height:100%;object-fit:cover}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"] }]
|
|
158
|
+
args: [{ selector: "aia-suggestion-item", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill under the picture, so a slow or\n failed load leaves a neutral square rather than a gap. The picture is\n decorative: the text is the option's accessible name. -->\n <span *ngIf=\"imageSrc as src\" class=\"aia-suggestion-image\" aria-hidden=\"true\">\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\">{{ label }}</span>\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}[data-aia-fit] .aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:none}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image img{display:block;width:100%;height:100%;object-fit:cover}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"] }]
|
|
159
159
|
}], propDecorators: { option: [{
|
|
160
160
|
type: Input
|
|
161
161
|
}], isHighlighted: [{
|
|
@@ -181,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
181
181
|
}], unhighlight: [{
|
|
182
182
|
type: Output
|
|
183
183
|
}] } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvc3VnZ2VzdGlvbi1pdGVtL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3N1Z2dlc3Rpb24taXRlbS9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUVYLHFCQUFxQixHQUN0QixNQUFNLHFDQUFxQyxDQUFDOzs7QUFFN0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBVUgsTUFBTSxPQUFPLHVCQUF1QjtJQVRwQztRQVdXLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDhFQUE4RTtRQUNyRSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLG9IQUFvSDtRQUMzRyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDJGQUEyRjtRQUNsRixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDhGQUE4RjtRQUNyRixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBUzVCOzs7O1dBSUc7UUFDSCxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUVkLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUM5QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4RDs7OztXQUlHO1FBQ2dCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUxRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRUMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFHMUMsYUFBUSxHQUFvQixJQUFJLENBQUM7UUFDekM7Ozs7V0FJRztRQUNLLGVBQVUsR0FBc0IsRUFBRSxDQUFDO0tBNEY1QztJQWhJQzs7OztPQUlHO0lBQ0gsSUFBYSxZQUFZLENBQUMsS0FBYTtRQUNyQyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3hELENBQUM7SUErQkQsK0VBQStFO0lBQy9FLElBQUksS0FBSztRQUNQLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDbEMsT0FBTyxDQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQzdGLENBQUM7SUFDSixDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLElBQUksV0FBVztRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDbEMsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMxQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9FLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDdEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDNUU7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUztZQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDckUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVM7WUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztZQUFFLE9BQU87UUFDckQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUM5QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7cUhBNUlVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDRYQzlDcEMsb2lFQWtEQSw4bUxEVlksWUFBWTs0RkFNWCx1QkFBdUI7a0JBVG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQUs1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTU8sWUFBWTtzQkFBeEIsS0FBSztnQkFVYSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU07Z0JBTVksV0FBVztzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHR5cGUgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCB0eXBlIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7XG4gIGZvcm1hdE9wdGlvbkNvdW50LFxuICBvcHRpb25JbWFnZVNvdXJjZXMsXG4gIG9wdGlvbkxhYmVsLFxuICB0eXBlIFN1Z2dlc3Rpb25PcHRpb24sXG4gIHNhbml0aXplT3B0aW9uSWNvblN2Zyxcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5cbi8qKlxuICogSW50ZXJuYWwgc2luZ2xlLW9wdGlvbiBjZWxsIHVzZWQgaW5zaWRlIHRoZSBzdWdnZXN0aW9uIGdyaWQuIE1pcnJvcnNcbiAqIGBwYWNrYWdlcy9yZWFjdC9zcmMvY29tcG9uZW50cy9TdWdnZXN0aW9uSXRlbS50c3hgLiBIYW5kbGVzOlxuICpcbiAqIC0gVGFwcGFibGUgdnMgbm9uLXRhcHBhYmxlIGN1cnNvciArIGhvdmVyIHN0eWxpbmdcbiAqIC0gUHJlc3NlZC1zdGF0ZSBjb21wcmVzcyBhbmltYXRpb24gKDE3MG1zLCBzaW5nbGUtZmxpZ2h0KVxuICogLSBLZXlib2FyZCBhY3RpdmF0aW9uIChFbnRlci9TcGFjZSlcbiAqIC0gQVJJQSBgcm9sZT1cIm9wdGlvblwiYCArIGBhcmlhLXNlbGVjdGVkYCBmb3IgdGhlIGxpc3Rib3ggcGF0dGVyblxuICogLSBMb2FkaW5nIHNrZWxldG9uIHdoZW4gYGxvYWRpbmc9dHJ1ZWBcbiAqIC0gU2VydmVyLXByb3ZpZGVkIGljb24gKGBpY29uX3N2Z2ApLCBhbGxvd2xpc3RlZCB0aHJvdWdoIHRoZSBjb3JlJ3NcbiAqICAgYHNhbml0aXplT3B0aW9uSWNvblN2Z2AgYmVmb3JlIGl0IGlzIGJvdW5kIGFzIEhUTUxcbiAqIC0gU2VydmVyLXByb3ZpZGVkIHBpY3R1cmUgKGBpbWFnZV91cmxgKSBhcyBhIHNxdWFyZSB0aHVtYm5haWwgaW4gcGxhY2Ugb2ZcbiAqICAgdGhlIGljb24sIGFuZCBpdGVtIGNvdW50IChgaXRlbV9jb3VudGApIGF0IHRoZSByb3cncyB0cmFpbGluZyBlZGdlXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtc3VnZ2VzdGlvbi1pdGVtXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQuY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBTdWdnZXN0aW9uSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIG9wdGlvbiE6IFN1Z2dlc3Rpb25PcHRpb247XG4gIEBJbnB1dCgpIGlzSGlnaGxpZ2h0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaWQgPSBcIlwiO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRvIGRyYXcgdGhlIG9wdGlvbidzIGBpY29uX3N2Z2AgYmVmb3JlIGl0cyB0ZXh0LiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93SWNvbiA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIGRyYXcgdGhlIG9wdGlvbidzIGBpbWFnZV91cmxgIGFzIGEgdGh1bWJuYWlsIGJlZm9yZSBpdHMgdGV4dCwgaW4gcGxhY2Ugb2YgdGhlIGljb24uIERlZmF1bHQ6IHRydWUuICovXG4gIEBJbnB1dCgpIHNob3dJbWFnZSA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIG9wdGlvbidzIGBpdGVtX2NvdW50YCBhdCB0aGUgcm93J3MgdHJhaWxpbmcgZWRnZS4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0NvdW50ID0gdHJ1ZTtcbiAgLyoqIEZhZGUgdGhpcyBvcHRpb24ncyB0ZXh0IHRvd2FyZCBpdHMgYm90dG9tIGVkZ2UgKGxhc3QgdmlzaWJsZSByb3cgb2YgYSBzY3JvbGxhYmxlIGdyaWQpLiAqL1xuICBASW5wdXQoKSBzY3JvbGxIaW50ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTdGFydCBkZWxheSBvZiB0aGlzIHJvdydzIGVudHJhbmNlIGFuaW1hdGlvbiAobXMpIOKAlCBlYWNoIHJvdyByaXNlcyBpbiBhXG4gICAqIGJlYXQgYWZ0ZXIgdGhlIG9uZSBuZWFyZXIgdGhlIGlucHV0LiBDYXB0dXJlZCBvbmNlLCBvbiBmaXJzdCByZW5kZXIsIHNvIGFcbiAgICogbGF0ZXIgY2hhbmdlLWRldGVjdGlvbiBwYXNzIGNhbid0IHJlc3RhcnQgYSByb3cgbWlkLXJpc2UuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZW50ZXJEZWxheU1zKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5lbnRlckRlbGF5ID09PSBudWxsKSB0aGlzLmVudGVyRGVsYXkgPSB2YWx1ZTtcbiAgfVxuICAvKipcbiAgICogVGhlIGNhcHR1cmVkIGRlbGF5OyBgbnVsbGAgdW50aWwgdGhlIGZpcnN0IGBlbnRlckRlbGF5TXNgIGJpbmRpbmcgbGFuZHMuXG4gICAqIFRoZSB0ZW1wbGF0ZSBiaW5kcyBpdCB0byBgLS1haWEtb3B0aW9uLWVudGVyLWRlbGF5YCAodGhlIGNvcmUnc1xuICAgKiBPUFRJT05fRU5URVJfREVMQVlfVkFSKSwgd2hpY2ggdGhlIHN0eWxlc2hlZXQncyBlbnRyYW5jZSBydWxlIHJlYWRzLlxuICAgKi9cbiAgZW50ZXJEZWxheTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VnZ2VzdGlvbk9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGhpZ2hsaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyIGxlZnQgdGhpcyByb3cuIFRoZSBvd25lciBjbGVhcnMgdGhlIGhpZ2hsaWdodCBpZiBpdCBpcyBzdGlsbFxuICAgKiBvbiB0aGlzIHJvdzogYSBob3ZlciBoaWdobGlnaHQgZW5kcyB3aXRoIHRoZSBob3Zlciwgc28gRW50ZXIgYWZ0ZXJ3YXJkc1xuICAgKiBzdWJtaXRzIGluc3RlYWQgb2YgcGlja2luZyBhIHJvdyB0aGUgcG9pbnRlciBpcyBubyBsb25nZXIgb24uXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdW5oaWdobGlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJlc3NlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBwcmVzc2VkVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGljb25Tb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpY29uU2FmZTogU2FmZUh0bWwgfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIFRoZSBgc3JjYHMgdGhhdCBmYWlsZWQgdG8gbG9hZDogdGhlIHJvdyBtb3ZlcyBvbiB0byB0aGUgbmV4dCBzb3VyY2UgKGFcbiAgICogU2hvcGlmeSB0aHVtYm5haWwgZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwpLCBhbmQgdGhlIHRpbGUga2VlcHMgaXRzXG4gICAqIHBsYWNlaG9sZGVyIGZpbGwgb25jZSBub25lIGlzIGxlZnQuXG4gICAqL1xuICBwcml2YXRlIGZhaWxlZFNyY3M6IHJlYWRvbmx5IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIFRoZSBvcHRpb24ncyB0ZXh0LiBgaWNvbmAgaXMgdGhlIGljb24ncyBuYW1lIGFuZCBpcyBuZXZlciBzaG93biBhcyB0ZXh0LiAqL1xuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb3B0aW9uTGFiZWwodGhpcy5vcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwaWN0dXJlJ3MgYHNyY2AsIG9yIGBudWxsYCB3aGVuIHRoZSByb3cgZHJhd3Mgbm9uZTogaW1hZ2VzIG9mZiwgbm9cbiAgICogYGltYWdlX3VybGAsIG9yIG9uZSB0aGF0IGlzIG5vdCBhbiBodHRwKHMpIFVSTC4gQSBwaWN0dXJlIHN0YW5kcyBpbiBmb3JcbiAgICogdGhlIGljb24g4oCUIGEgcm93IG5ldmVyIGxlYWRzIHdpdGggdHdvIHZpc3VhbHMuXG4gICAqL1xuICBnZXQgaW1hZ2VTcmMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc291cmNlcyA9IHRoaXMuaW1hZ2VTb3VyY2VzO1xuICAgIHJldHVybiAoXG4gICAgICBzb3VyY2VzLmZpbmQoKHNyYykgPT4gIXRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKSA/PyBzb3VyY2VzW3NvdXJjZXMubGVuZ3RoIC0gMV0gPz8gbnVsbFxuICAgICk7XG4gIH1cblxuICAvKiogV2hldGhlciBldmVyeSBzb3VyY2Ugb2YgdGhlIHBpY3R1cmUgZmFpbGVkIHRvIGxvYWQgKHRoZSB0aWxlJ3MgZmlsbCBzdGF5cykuICovXG4gIGdldCBpbWFnZUZhaWxlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzb3VyY2VzID0gdGhpcy5pbWFnZVNvdXJjZXM7XG4gICAgcmV0dXJuIHNvdXJjZXMubGVuZ3RoID4gMCAmJiBzb3VyY2VzLmV2ZXJ5KChzcmMpID0+IHRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKTtcbiAgfVxuXG4gIG9uSW1hZ2VFcnJvcigpOiB2b2lkIHtcbiAgICBjb25zdCBzcmMgPSB0aGlzLmltYWdlU3JjO1xuICAgIGlmIChzcmMgIT09IG51bGwgJiYgIXRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKSB0aGlzLmZhaWxlZFNyY3MgPSBbLi4udGhpcy5mYWlsZWRTcmNzLCBzcmNdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW1hZ2VTb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zaG93SW1hZ2UgPyBvcHRpb25JbWFnZVNvdXJjZXModGhpcy5vcHRpb24uaW1hZ2VfdXJsKSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBhcyBwcmludGVkIChcIjEsMjg0XCIpLCBvciBgbnVsbGAgd2hlbiB0aGUgcm93IHNob3dzIG5vbmUuIFRoZVxuICAgKiB1bml0IHdvcmQgYWZ0ZXIgaXQgaXMgdGhlIHN0eWxlc2hlZXQncyAoYC0tYWlhLW9wdGlvbi1jb3VudC11bml0YCkuXG4gICAqL1xuICBnZXQgY291bnRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Q291bnQgPyBmb3JtYXRPcHRpb25Db3VudCh0aGlzLm9wdGlvbi5pdGVtX2NvdW50KSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG9wdGlvbidzIGljb24gYXMgYmluZGFibGUgSFRNTCwgb3IgYG51bGxgIHdoZW4gaXQgaGFzIG5vbmUgKG9yIGl0c1xuICAgKiBtYXJrdXAgZmFpbGVkIHRoZSBhbGxvd2xpc3QpLiBBbmd1bGFyJ3Mgb3duIEhUTUwgc2FuaXRpemVyIHN0cmlwcyBgPHN2Zz5gXG4gICAqIHdob2xlc2FsZSwgc28gdGhlIGNvcmUncyBhbGxvd2xpc3RlZCBvdXRwdXQgaXMgbWFya2VkIHRydXN0ZWQgaW5zdGVhZCDigJRcbiAgICogaXQgaXMgbmV2ZXIgdGhlIHNlcnZlcidzIHJhdyBzdHJpbmcuIFJlY29tcHV0ZWQgb25seSB3aGVuIHRoZSBtYXJrdXBcbiAgICogY2hhbmdlczsgdGhlIGdldHRlciBydW5zIG9uIGV2ZXJ5IE9uUHVzaCBjaGVjay5cbiAgICovXG4gIGdldCBpY29uSHRtbCgpOiBTYWZlSHRtbCB8IG51bGwge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc2hvd0ljb24gJiYgIXRoaXMuaW1hZ2VTcmMgPyB0aGlzLm9wdGlvbi5pY29uX3N2ZyA6IHVuZGVmaW5lZDtcbiAgICBpZiAoc3ZnICE9PSB0aGlzLmljb25Tb3VyY2UpIHtcbiAgICAgIHRoaXMuaWNvblNvdXJjZSA9IHN2ZztcbiAgICAgIGNvbnN0IGh0bWwgPSBzdmcgPyBzYW5pdGl6ZU9wdGlvbkljb25Tdmcoc3ZnKSA6IG51bGw7XG4gICAgICB0aGlzLmljb25TYWZlID0gaHRtbCA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaWNvblNhZmU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVzc2VkVGltZXIgIT09IHVuZGVmaW5lZCkgY2xlYXJUaW1lb3V0KHRoaXMucHJlc3NlZFRpbWVyKTtcbiAgfVxuXG4gIG9uU2VsZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlIHx8IHRoaXMucHJlc3NlZCkgcmV0dXJuO1xuICAgIHRoaXMucHJlc3NlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLm9wdGlvbik7XG4gICAgaWYgKHRoaXMucHJlc3NlZFRpbWVyICE9PSB1bmRlZmluZWQpIGNsZWFyVGltZW91dCh0aGlzLnByZXNzZWRUaW1lcik7XG4gICAgdGhpcy5wcmVzc2VkVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSwgMTcwKTtcbiAgfVxuXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8ICF0aGlzLm9wdGlvbi5pc190YXBwYWJsZSkgcmV0dXJuO1xuICAgIHRoaXMuaGlnaGxpZ2h0LmVtaXQoKTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0LmVtaXQoKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9uU2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtpZF09XCJpZFwiXG4gIHJvbGU9XCJvcHRpb25cIlxuICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICBbYXR0ci5kYXRhLWFpYS1sb2FkaW5nXT1cImxvYWRpbmcgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pY29uXT1cImljb25IdG1sICYmIG9wdGlvbi5pY29uID8gb3B0aW9uLmljb24gOiBudWxsXCJcbiAgW2F0dHIuZGF0YS1haWEtaW1hZ2VdPVwiaW1hZ2VTcmMgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pdGVtLWNvdW50XT1cImNvdW50TGFiZWwgIT09IG51bGwgPyBvcHRpb24uaXRlbV9jb3VudCA6IG51bGxcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWl0ZW1cIlxuICBbc3R5bGUuLS1haWEtb3B0aW9uLWVudGVyLWRlbGF5XT1cIihlbnRlckRlbGF5ID8/IDApICsgJ21zJ1wiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLWhpZ2hsaWdodGVkXT1cImlzSGlnaGxpZ2h0ZWQgJiYgIWxvYWRpbmdcIlxuICBbY2xhc3MuYWlhLXN1Z2dlc3Rpb24taXRlbS10YXBwYWJsZV09XCJvcHRpb24uaXNfdGFwcGFibGVcIlxuICBbY2xhc3MuYWlhLXN1Z2dlc3Rpb24taXRlbS1ub24tdGFwcGFibGVdPVwiIW9wdGlvbi5pc190YXBwYWJsZVwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXByZXNzZWRdPVwicHJlc3NlZFwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXNjcm9sbC1oaW50XT1cInNjcm9sbEhpbnRcIlxuICBbYXR0ci50YWJpbmRleF09XCJsb2FkaW5nIHx8ICFvcHRpb24uaXNfdGFwcGFibGUgPyAtMSA6IDBcIlxuICAoY2xpY2spPVwib25TZWxlY3QoKVwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24tY29udGVudFwiPlxuICAgIDwhLS0gVGhlIHRpbGUga2VlcHMgYSBwbGFjZWhvbGRlciBmaWxsIHVuZGVyIHRoZSBwaWN0dXJlLCBzbyBhIHNsb3cgb3JcbiAgICAgICAgIGZhaWxlZCBsb2FkIGxlYXZlcyBhIG5ldXRyYWwgc3F1YXJlIHJhdGhlciB0aGFuIGEgZ2FwLiBUaGUgcGljdHVyZSBpc1xuICAgICAgICAgZGVjb3JhdGl2ZTogdGhlIHRleHQgaXMgdGhlIG9wdGlvbidzIGFjY2Vzc2libGUgbmFtZS4gLS0+XG4gICAgPHNwYW4gKm5nSWY9XCJpbWFnZVNyYyBhcyBzcmNcIiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWltYWdlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICBkZWNvZGluZz1cImFzeW5jXCJcbiAgICAgICAgcmVmZXJyZXJwb2xpY3k9XCJuby1yZWZlcnJlclwiXG4gICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJpbWFnZUZhaWxlZFwiXG4gICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoKVwiXG4gICAgICAvPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJpY29uSHRtbFwiXG4gICAgICBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWljb25cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiaWNvbkh0bWxcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi10ZXh0XCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJvcHRpb24udGFnXCIgY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi10YWdcIj57eyBvcHRpb24udGFnIH19PC9zcGFuPlxuICAgIDwhLS0gUGFydCBvZiB0aGUgcm93J3MgYWNjZXNzaWJsZSBuYW1lLCByZWFkIGFmdGVyIHRoZSBvcHRpb24ncyB0ZXh0LiAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImNvdW50TGFiZWwgIT09IG51bGxcIiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWNvdW50XCI+e3sgY291bnRMYWJlbCB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvc3VnZ2VzdGlvbi1pdGVtL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3N1Z2dlc3Rpb24taXRlbS9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUVYLHFCQUFxQixHQUN0QixNQUFNLHFDQUFxQyxDQUFDOzs7QUFFN0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBVUgsTUFBTSxPQUFPLHVCQUF1QjtJQVRwQztRQVdXLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDhFQUE4RTtRQUNyRSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLG9IQUFvSDtRQUMzRyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDJGQUEyRjtRQUNsRixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDhGQUE4RjtRQUNyRixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBUzVCOzs7O1dBSUc7UUFDSCxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUVkLFdBQU0sR0FBRyxJQUFJLFlB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QVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztZQUFFLE9BQU87UUFDckQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUM5QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7cUhBNUlVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDRYQzlDcEMsb2lFQWtEQSxzc0xEVlksWUFBWTs0RkFNWCx1QkFBdUI7a0JBVG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQUs1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTU8sWUFBWTtzQkFBeEIsS0FBSztnQkFVYSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU07Z0JBTVksV0FBVztzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHR5cGUgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCB0eXBlIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7XG4gIGZvcm1hdE9wdGlvbkNvdW50LFxuICBvcHRpb25JbWFnZVNvdXJjZXMsXG4gIG9wdGlvbkxhYmVsLFxuICB0eXBlIFN1Z2dlc3Rpb25PcHRpb24sXG4gIHNhbml0aXplT3B0aW9uSWNvblN2Zyxcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5cbi8qKlxuICogSW50ZXJuYWwgc2luZ2xlLW9wdGlvbiBjZWxsIHVzZWQgaW5zaWRlIHRoZSBzdWdnZXN0aW9uIGdyaWQuIE1pcnJvcnNcbiAqIGBwYWNrYWdlcy9yZWFjdC9zcmMvY29tcG9uZW50cy9TdWdnZXN0aW9uSXRlbS50c3hgLiBIYW5kbGVzOlxuICpcbiAqIC0gVGFwcGFibGUgdnMgbm9uLXRhcHBhYmxlIGN1cnNvciArIGhvdmVyIHN0eWxpbmdcbiAqIC0gUHJlc3NlZC1zdGF0ZSBjb21wcmVzcyBhbmltYXRpb24gKDE3MG1zLCBzaW5nbGUtZmxpZ2h0KVxuICogLSBLZXlib2FyZCBhY3RpdmF0aW9uIChFbnRlci9TcGFjZSlcbiAqIC0gQVJJQSBgcm9sZT1cIm9wdGlvblwiYCArIGBhcmlhLXNlbGVjdGVkYCBmb3IgdGhlIGxpc3Rib3ggcGF0dGVyblxuICogLSBMb2FkaW5nIHNrZWxldG9uIHdoZW4gYGxvYWRpbmc9dHJ1ZWBcbiAqIC0gU2VydmVyLXByb3ZpZGVkIGljb24gKGBpY29uX3N2Z2ApLCBhbGxvd2xpc3RlZCB0aHJvdWdoIHRoZSBjb3JlJ3NcbiAqICAgYHNhbml0aXplT3B0aW9uSWNvblN2Z2AgYmVmb3JlIGl0IGlzIGJvdW5kIGFzIEhUTUxcbiAqIC0gU2VydmVyLXByb3ZpZGVkIHBpY3R1cmUgKGBpbWFnZV91cmxgKSBhcyBhIHNxdWFyZSB0aHVtYm5haWwgaW4gcGxhY2Ugb2ZcbiAqICAgdGhlIGljb24sIGFuZCBpdGVtIGNvdW50IChgaXRlbV9jb3VudGApIGF0IHRoZSByb3cncyB0cmFpbGluZyBlZGdlXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtc3VnZ2VzdGlvbi1pdGVtXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQuY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBTdWdnZXN0aW9uSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIG9wdGlvbiE6IFN1Z2dlc3Rpb25PcHRpb247XG4gIEBJbnB1dCgpIGlzSGlnaGxpZ2h0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaWQgPSBcIlwiO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRvIGRyYXcgdGhlIG9wdGlvbidzIGBpY29uX3N2Z2AgYmVmb3JlIGl0cyB0ZXh0LiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93SWNvbiA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIGRyYXcgdGhlIG9wdGlvbidzIGBpbWFnZV91cmxgIGFzIGEgdGh1bWJuYWlsIGJlZm9yZSBpdHMgdGV4dCwgaW4gcGxhY2Ugb2YgdGhlIGljb24uIERlZmF1bHQ6IHRydWUuICovXG4gIEBJbnB1dCgpIHNob3dJbWFnZSA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIG9wdGlvbidzIGBpdGVtX2NvdW50YCBhdCB0aGUgcm93J3MgdHJhaWxpbmcgZWRnZS4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0NvdW50ID0gdHJ1ZTtcbiAgLyoqIEZhZGUgdGhpcyBvcHRpb24ncyB0ZXh0IHRvd2FyZCBpdHMgYm90dG9tIGVkZ2UgKGxhc3QgdmlzaWJsZSByb3cgb2YgYSBzY3JvbGxhYmxlIGdyaWQpLiAqL1xuICBASW5wdXQoKSBzY3JvbGxIaW50ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTdGFydCBkZWxheSBvZiB0aGlzIHJvdydzIGVudHJhbmNlIGFuaW1hdGlvbiAobXMpIOKAlCBlYWNoIHJvdyByaXNlcyBpbiBhXG4gICAqIGJlYXQgYWZ0ZXIgdGhlIG9uZSBuZWFyZXIgdGhlIGlucHV0LiBDYXB0dXJlZCBvbmNlLCBvbiBmaXJzdCByZW5kZXIsIHNvIGFcbiAgICogbGF0ZXIgY2hhbmdlLWRldGVjdGlvbiBwYXNzIGNhbid0IHJlc3RhcnQgYSByb3cgbWlkLXJpc2UuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZW50ZXJEZWxheU1zKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5lbnRlckRlbGF5ID09PSBudWxsKSB0aGlzLmVudGVyRGVsYXkgPSB2YWx1ZTtcbiAgfVxuICAvKipcbiAgICogVGhlIGNhcHR1cmVkIGRlbGF5OyBgbnVsbGAgdW50aWwgdGhlIGZpcnN0IGBlbnRlckRlbGF5TXNgIGJpbmRpbmcgbGFuZHMuXG4gICAqIFRoZSB0ZW1wbGF0ZSBiaW5kcyBpdCB0byBgLS1haWEtb3B0aW9uLWVudGVyLWRlbGF5YCAodGhlIGNvcmUnc1xuICAgKiBPUFRJT05fRU5URVJfREVMQVlfVkFSKSwgd2hpY2ggdGhlIHN0eWxlc2hlZXQncyBlbnRyYW5jZSBydWxlIHJlYWRzLlxuICAgKi9cbiAgZW50ZXJEZWxheTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VnZ2VzdGlvbk9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGhpZ2hsaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyIGxlZnQgdGhpcyByb3cuIFRoZSBvd25lciBjbGVhcnMgdGhlIGhpZ2hsaWdodCBpZiBpdCBpcyBzdGlsbFxuICAgKiBvbiB0aGlzIHJvdzogYSBob3ZlciBoaWdobGlnaHQgZW5kcyB3aXRoIHRoZSBob3Zlciwgc28gRW50ZXIgYWZ0ZXJ3YXJkc1xuICAgKiBzdWJtaXRzIGluc3RlYWQgb2YgcGlja2luZyBhIHJvdyB0aGUgcG9pbnRlciBpcyBubyBsb25nZXIgb24uXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdW5oaWdobGlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJlc3NlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBwcmVzc2VkVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGljb25Tb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpY29uU2FmZTogU2FmZUh0bWwgfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIFRoZSBgc3JjYHMgdGhhdCBmYWlsZWQgdG8gbG9hZDogdGhlIHJvdyBtb3ZlcyBvbiB0byB0aGUgbmV4dCBzb3VyY2UgKGFcbiAgICogU2hvcGlmeSB0aHVtYm5haWwgZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwpLCBhbmQgdGhlIHRpbGUga2VlcHMgaXRzXG4gICAqIHBsYWNlaG9sZGVyIGZpbGwgb25jZSBub25lIGlzIGxlZnQuXG4gICAqL1xuICBwcml2YXRlIGZhaWxlZFNyY3M6IHJlYWRvbmx5IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIFRoZSBvcHRpb24ncyB0ZXh0LiBgaWNvbmAgaXMgdGhlIGljb24ncyBuYW1lIGFuZCBpcyBuZXZlciBzaG93biBhcyB0ZXh0LiAqL1xuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb3B0aW9uTGFiZWwodGhpcy5vcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwaWN0dXJlJ3MgYHNyY2AsIG9yIGBudWxsYCB3aGVuIHRoZSByb3cgZHJhd3Mgbm9uZTogaW1hZ2VzIG9mZiwgbm9cbiAgICogYGltYWdlX3VybGAsIG9yIG9uZSB0aGF0IGlzIG5vdCBhbiBodHRwKHMpIFVSTC4gQSBwaWN0dXJlIHN0YW5kcyBpbiBmb3JcbiAgICogdGhlIGljb24g4oCUIGEgcm93IG5ldmVyIGxlYWRzIHdpdGggdHdvIHZpc3VhbHMuXG4gICAqL1xuICBnZXQgaW1hZ2VTcmMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc291cmNlcyA9IHRoaXMuaW1hZ2VTb3VyY2VzO1xuICAgIHJldHVybiAoXG4gICAgICBzb3VyY2VzLmZpbmQoKHNyYykgPT4gIXRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKSA/PyBzb3VyY2VzW3NvdXJjZXMubGVuZ3RoIC0gMV0gPz8gbnVsbFxuICAgICk7XG4gIH1cblxuICAvKiogV2hldGhlciBldmVyeSBzb3VyY2Ugb2YgdGhlIHBpY3R1cmUgZmFpbGVkIHRvIGxvYWQgKHRoZSB0aWxlJ3MgZmlsbCBzdGF5cykuICovXG4gIGdldCBpbWFnZUZhaWxlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzb3VyY2VzID0gdGhpcy5pbWFnZVNvdXJjZXM7XG4gICAgcmV0dXJuIHNvdXJjZXMubGVuZ3RoID4gMCAmJiBzb3VyY2VzLmV2ZXJ5KChzcmMpID0+IHRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKTtcbiAgfVxuXG4gIG9uSW1hZ2VFcnJvcigpOiB2b2lkIHtcbiAgICBjb25zdCBzcmMgPSB0aGlzLmltYWdlU3JjO1xuICAgIGlmIChzcmMgIT09IG51bGwgJiYgIXRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKSB0aGlzLmZhaWxlZFNyY3MgPSBbLi4udGhpcy5mYWlsZWRTcmNzLCBzcmNdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW1hZ2VTb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zaG93SW1hZ2UgPyBvcHRpb25JbWFnZVNvdXJjZXModGhpcy5vcHRpb24uaW1hZ2VfdXJsKSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBhcyBwcmludGVkIChcIjEsMjg0XCIpLCBvciBgbnVsbGAgd2hlbiB0aGUgcm93IHNob3dzIG5vbmUuIFRoZVxuICAgKiB1bml0IHdvcmQgYWZ0ZXIgaXQgaXMgdGhlIHN0eWxlc2hlZXQncyAoYC0tYWlhLW9wdGlvbi1jb3VudC11bml0YCkuXG4gICAqL1xuICBnZXQgY291bnRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Q291bnQgPyBmb3JtYXRPcHRpb25Db3VudCh0aGlzLm9wdGlvbi5pdGVtX2NvdW50KSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG9wdGlvbidzIGljb24gYXMgYmluZGFibGUgSFRNTCwgb3IgYG51bGxgIHdoZW4gaXQgaGFzIG5vbmUgKG9yIGl0c1xuICAgKiBtYXJrdXAgZmFpbGVkIHRoZSBhbGxvd2xpc3QpLiBBbmd1bGFyJ3Mgb3duIEhUTUwgc2FuaXRpemVyIHN0cmlwcyBgPHN2Zz5gXG4gICAqIHdob2xlc2FsZSwgc28gdGhlIGNvcmUncyBhbGxvd2xpc3RlZCBvdXRwdXQgaXMgbWFya2VkIHRydXN0ZWQgaW5zdGVhZCDigJRcbiAgICogaXQgaXMgbmV2ZXIgdGhlIHNlcnZlcidzIHJhdyBzdHJpbmcuIFJlY29tcHV0ZWQgb25seSB3aGVuIHRoZSBtYXJrdXBcbiAgICogY2hhbmdlczsgdGhlIGdldHRlciBydW5zIG9uIGV2ZXJ5IE9uUHVzaCBjaGVjay5cbiAgICovXG4gIGdldCBpY29uSHRtbCgpOiBTYWZlSHRtbCB8IG51bGwge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc2hvd0ljb24gJiYgIXRoaXMuaW1hZ2VTcmMgPyB0aGlzLm9wdGlvbi5pY29uX3N2ZyA6IHVuZGVmaW5lZDtcbiAgICBpZiAoc3ZnICE9PSB0aGlzLmljb25Tb3VyY2UpIHtcbiAgICAgIHRoaXMuaWNvblNvdXJjZSA9IHN2ZztcbiAgICAgIGNvbnN0IGh0bWwgPSBzdmcgPyBzYW5pdGl6ZU9wdGlvbkljb25Tdmcoc3ZnKSA6IG51bGw7XG4gICAgICB0aGlzLmljb25TYWZlID0gaHRtbCA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaWNvblNhZmU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVzc2VkVGltZXIgIT09IHVuZGVmaW5lZCkgY2xlYXJUaW1lb3V0KHRoaXMucHJlc3NlZFRpbWVyKTtcbiAgfVxuXG4gIG9uU2VsZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlIHx8IHRoaXMucHJlc3NlZCkgcmV0dXJuO1xuICAgIHRoaXMucHJlc3NlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLm9wdGlvbik7XG4gICAgaWYgKHRoaXMucHJlc3NlZFRpbWVyICE9PSB1bmRlZmluZWQpIGNsZWFyVGltZW91dCh0aGlzLnByZXNzZWRUaW1lcik7XG4gICAgdGhpcy5wcmVzc2VkVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSwgMTcwKTtcbiAgfVxuXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8ICF0aGlzLm9wdGlvbi5pc190YXBwYWJsZSkgcmV0dXJuO1xuICAgIHRoaXMuaGlnaGxpZ2h0LmVtaXQoKTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0LmVtaXQoKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9uU2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtpZF09XCJpZFwiXG4gIHJvbGU9XCJvcHRpb25cIlxuICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICBbYXR0ci5kYXRhLWFpYS1sb2FkaW5nXT1cImxvYWRpbmcgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pY29uXT1cImljb25IdG1sICYmIG9wdGlvbi5pY29uID8gb3B0aW9uLmljb24gOiBudWxsXCJcbiAgW2F0dHIuZGF0YS1haWEtaW1hZ2VdPVwiaW1hZ2VTcmMgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pdGVtLWNvdW50XT1cImNvdW50TGFiZWwgIT09IG51bGwgPyBvcHRpb24uaXRlbV9jb3VudCA6IG51bGxcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWl0ZW1cIlxuICBbc3R5bGUuLS1haWEtb3B0aW9uLWVudGVyLWRlbGF5XT1cIihlbnRlckRlbGF5ID8/IDApICsgJ21zJ1wiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLWhpZ2hsaWdodGVkXT1cImlzSGlnaGxpZ2h0ZWQgJiYgIWxvYWRpbmdcIlxuICBbY2xhc3MuYWlhLXN1Z2dlc3Rpb24taXRlbS10YXBwYWJsZV09XCJvcHRpb24uaXNfdGFwcGFibGVcIlxuICBbY2xhc3MuYWlhLXN1Z2dlc3Rpb24taXRlbS1ub24tdGFwcGFibGVdPVwiIW9wdGlvbi5pc190YXBwYWJsZVwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXByZXNzZWRdPVwicHJlc3NlZFwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXNjcm9sbC1oaW50XT1cInNjcm9sbEhpbnRcIlxuICBbYXR0ci50YWJpbmRleF09XCJsb2FkaW5nIHx8ICFvcHRpb24uaXNfdGFwcGFibGUgPyAtMSA6IDBcIlxuICAoY2xpY2spPVwib25TZWxlY3QoKVwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24tY29udGVudFwiPlxuICAgIDwhLS0gVGhlIHRpbGUga2VlcHMgYSBwbGFjZWhvbGRlciBmaWxsIHVuZGVyIHRoZSBwaWN0dXJlLCBzbyBhIHNsb3cgb3JcbiAgICAgICAgIGZhaWxlZCBsb2FkIGxlYXZlcyBhIG5ldXRyYWwgc3F1YXJlIHJhdGhlciB0aGFuIGEgZ2FwLiBUaGUgcGljdHVyZSBpc1xuICAgICAgICAgZGVjb3JhdGl2ZTogdGhlIHRleHQgaXMgdGhlIG9wdGlvbidzIGFjY2Vzc2libGUgbmFtZS4gLS0+XG4gICAgPHNwYW4gKm5nSWY9XCJpbWFnZVNyYyBhcyBzcmNcIiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWltYWdlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICBkZWNvZGluZz1cImFzeW5jXCJcbiAgICAgICAgcmVmZXJyZXJwb2xpY3k9XCJuby1yZWZlcnJlclwiXG4gICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJpbWFnZUZhaWxlZFwiXG4gICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoKVwiXG4gICAgICAvPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJpY29uSHRtbFwiXG4gICAgICBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWljb25cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiaWNvbkh0bWxcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi10ZXh0XCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJvcHRpb24udGFnXCIgY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi10YWdcIj57eyBvcHRpb24udGFnIH19PC9zcGFuPlxuICAgIDwhLS0gUGFydCBvZiB0aGUgcm93J3MgYWNjZXNzaWJsZSBuYW1lLCByZWFkIGFmdGVyIHRoZSBvcHRpb24ncyB0ZXh0LiAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImNvdW50TGFiZWwgIT09IG51bGxcIiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWNvdW50XCI+e3sgY291bnRMYWJlbCB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|