@mescius/inputman.angular
Version:
このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。
204 lines • 23.5 kB
JavaScript
import { Component, Input, ElementRef, Output, EventEmitter, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { GC } from '../inputman';
import { provideParent, GcComponents } from './GcComponents';
import * as i0 from "@angular/core";
export class GcTagBoxComponent extends GcComponents {
constructor(ref) {
super(ref);
this.onChange = () => { };
this.onTouched = () => { };
this.dropDownClosed = new EventEmitter();
this.dropDownOpened = new EventEmitter();
this.focusIn = new EventEmitter();
this.focusOut = new EventEmitter();
this.insertTag = new EventEmitter();
this.removeTag = new EventEmitter();
this.valueChanged = new EventEmitter();
}
writeValue(value) {
return;
}
registerOnChange(onChange) {
this.onChange = onChange;
}
registerOnTouched(onTouched) {
this.onTouched = onTouched;
}
setDisabledState(isDisabled) {
this.enabled = !isDisabled;
if (this._imCtrl) {
this._imCtrl.enabled = this.enabled;
}
}
initGcComponent() {
var element = document.createElement('div');
this.createTemplate(element);
this._imCtrl = new GC.InputMan.GcTagBox(element, this);
}
bindEvent() {
if (!this._imCtrl) {
return;
}
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.DropDownClosed, (eventArgs) => {
this.dropDownClosed.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.DropDownOpened, (eventArgs) => {
this.dropDownOpened.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.FocusIn, (eventArgs) => {
this.focusIn.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.FocusOut, (eventArgs) => {
this.focusOut.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.InsertTag, (eventArgs) => {
this.insertTag.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.RemoveTag, (eventArgs) => {
this.removeTag.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcTagBoxEvent.ValueChanged, (eventArgs) => {
this.valueChanged.emit(eventArgs);
this.onChange(this._imCtrl.value);
this.onTouched();
});
}
}
GcTagBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcTagBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
GcTagBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcTagBoxComponent, selector: "gc-tag-box", inputs: { imageAlignment: "imageAlignment", items: "items", autoFilter: "autoFilter", showDropDownIfNoItems: "showDropDownIfNoItems", dropDownAlignmentMode: "dropDownAlignmentMode", dropDownHeight: "dropDownHeight", dropDownWidth: "dropDownWidth", allowDropDownResize: "allowDropDownResize", dropDownDisplayMemberPath: "dropDownDisplayMemberPath", width: "width", height: "height", watermarkNullText: "watermarkNullText", watermarkDisplayNullText: "watermarkDisplayNullText", tagTemplate: "tagTemplate", readOnly: "readOnly", enabled: "enabled", displayMode: "displayMode", allowCopyTag: "allowCopyTag", allowDragTag: "allowDragTag", allowSelectTag: "allowSelectTag", allowCustomTag: "allowCustomTag", applyCustomTagKey: "applyCustomTagKey", separator: "separator", tagImageMemberPath: "tagImageMemberPath", tagTextMemberPath: "tagTextMemberPath", showImage: "showImage", minHeight: "minHeight", minWidth: "minWidth", maxHeight: "maxHeight", maxWidth: "maxWidth", maxTagWidth: "maxTagWidth", dropDownItemHeight: "dropDownItemHeight", dropDownItemTemplate: "dropDownItemTemplate", tagValidator: "tagValidator", allowResize: "allowResize", showDropDown: "showDropDown", uniqueTags: "uniqueTags", maxTagCount: "maxTagCount", autoSelect: "autoSelect", value: "value", appendCustomTagToDropDown: "appendCustomTagToDropDown", floatingLabelDirection: "floatingLabelDirection", floatingLabelType: "floatingLabelType", floatingLabelText: "floatingLabelText", dropDownType: "dropDownType", dropDownTreeConfig: "dropDownTreeConfig", helpContent: "helpContent", showHelpButton: "showHelpButton", showClearButton: "showClearButton" }, outputs: { dropDownClosed: "dropDownClosed", dropDownOpened: "dropDownOpened", focusIn: "focusIn", focusOut: "focusOut", insertTag: "insertTag", removeTag: "removeTag", valueChanged: "valueChanged" }, providers: [
provideParent(GcTagBoxComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcTagBoxComponent),
}
], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcTagBoxComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-tag-box',
template: ``,
providers: [
provideParent(GcTagBoxComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcTagBoxComponent),
}
]
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { imageAlignment: [{
type: Input
}], items: [{
type: Input
}], autoFilter: [{
type: Input
}], showDropDownIfNoItems: [{
type: Input
}], dropDownAlignmentMode: [{
type: Input
}], dropDownHeight: [{
type: Input
}], dropDownWidth: [{
type: Input
}], allowDropDownResize: [{
type: Input
}], dropDownDisplayMemberPath: [{
type: Input
}], width: [{
type: Input
}], height: [{
type: Input
}], watermarkNullText: [{
type: Input
}], watermarkDisplayNullText: [{
type: Input
}], tagTemplate: [{
type: Input
}], readOnly: [{
type: Input
}], enabled: [{
type: Input
}], displayMode: [{
type: Input
}], allowCopyTag: [{
type: Input
}], allowDragTag: [{
type: Input
}], allowSelectTag: [{
type: Input
}], allowCustomTag: [{
type: Input
}], applyCustomTagKey: [{
type: Input
}], separator: [{
type: Input
}], tagImageMemberPath: [{
type: Input
}], tagTextMemberPath: [{
type: Input
}], showImage: [{
type: Input
}], minHeight: [{
type: Input
}], minWidth: [{
type: Input
}], maxHeight: [{
type: Input
}], maxWidth: [{
type: Input
}], maxTagWidth: [{
type: Input
}], dropDownItemHeight: [{
type: Input
}], dropDownItemTemplate: [{
type: Input
}], tagValidator: [{
type: Input
}], allowResize: [{
type: Input
}], showDropDown: [{
type: Input
}], uniqueTags: [{
type: Input
}], maxTagCount: [{
type: Input
}], autoSelect: [{
type: Input
}], value: [{
type: Input
}], appendCustomTagToDropDown: [{
type: Input
}], floatingLabelDirection: [{
type: Input
}], floatingLabelType: [{
type: Input
}], floatingLabelText: [{
type: Input
}], dropDownType: [{
type: Input
}], dropDownTreeConfig: [{
type: Input
}], helpContent: [{
type: Input
}], showHelpButton: [{
type: Input
}], showClearButton: [{
type: Input
}], dropDownClosed: [{
type: Output
}], dropDownOpened: [{
type: Output
}], focusIn: [{
type: Output
}], focusOut: [{
type: Output
}], insertTag: [{
type: Output
}], removeTag: [{
type: Output
}], valueChanged: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NUYWdCb3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL0djVGFnQm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWM3RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsWUFBa0M7SUFFckUsWUFBWSxHQUFlO1FBQ3ZCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVQLGFBQVEsR0FBYSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0IsY0FBUyxHQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQXFIakMsbUJBQWMsR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RSxtQkFBYyxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhFLFlBQU8sR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRSxhQUFRLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEUsY0FBUyxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5FLGNBQVMsR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuRSxpQkFBWSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBbkk3RSxDQUFDO0lBSUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsT0FBTztJQUNYLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxRQUFhO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFD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QkFEdkIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQUdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQUdDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MseUJBQXlCO3NCQUQvQixLQUFLO2dCQUdDLHNCQUFzQjtzQkFENUIsS0FBSztnQkFHQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBR0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLE1BQU07Z0JBR0EsY0FBYztzQkFEcEIsTUFBTTtnQkFHQSxPQUFPO3NCQURiLE1BQU07Z0JBR0EsUUFBUTtzQkFEZCxNQUFNO2dCQUdBLFNBQVM7c0JBRGYsTUFBTTtnQkFHQSxTQUFTO3NCQURmLE1BQU07Z0JBR0EsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2lucHV0bWFuJztcbmltcG9ydCB7IHByb3ZpZGVQYXJlbnQsIEdjQ29tcG9uZW50cyB9IGZyb20gJy4vR2NDb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy10YWctYm94JyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVQYXJlbnQoR2NUYWdCb3hDb21wb25lbnQpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2NUYWdCb3hDb21wb25lbnQpLFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBHY1RhZ0JveENvbXBvbmVudCBleHRlbmRzIEdjQ29tcG9uZW50czxHQy5JbnB1dE1hbi5HY1RhZ0JveD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIocmVmKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSAhaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgdGhpcy5faW1DdHJsLmVuYWJsZWQgPSB0aGlzLmVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbWFnZUFsaWdubWVudD86IEdDLklucHV0TWFuLkdjVGFnSW1hZ2VBbGlnbm1lbnQgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1zPzogb2JqZWN0W10gfCBzdHJpbmdbXSB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b0ZpbHRlcj86IEdDLklucHV0TWFuLkF1dG9GaWx0ZXIgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEcm9wRG93bklmTm9JdGVtcz86IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25BbGlnbm1lbnRNb2RlPzogR0MuSW5wdXRNYW4uR2NUYWdCb3hEcm9wRG93bkFsaWdubWVudE1vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25IZWlnaHQ/OiBudW1iZXIgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93RHJvcERvd25SZXNpemU/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duRGlzcGxheU1lbWJlclBhdGg/OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdhdGVybWFya051bGxUZXh0Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdhdGVybWFya0Rpc3BsYXlOdWxsVGV4dD86IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YWdUZW1wbGF0ZT86IHN0cmluZyB8ICgoYXJnczogYW55KSA9PiBIVE1MRWxlbWVudCk7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZE9ubHk/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlNb2RlPzogR0MuSW5wdXRNYW4uVGFnQm94RGlzcGxheU1vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dDb3B5VGFnPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd0RyYWdUYWc/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93U2VsZWN0VGFnPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd0N1c3RvbVRhZz86IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXBwbHlDdXN0b21UYWdLZXk/OiBHQy5JbnB1dE1hbi5LZXk7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VwYXJhdG9yPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhZ0ltYWdlTWVtYmVyUGF0aD86IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YWdUZXh0TWVtYmVyUGF0aD86IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93SW1hZ2U/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbkhlaWdodD86IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5XaWR0aD86IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4VGFnV2lkdGg/OiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25JdGVtSGVpZ2h0PzogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duSXRlbVRlbXBsYXRlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YWdWYWxpZGF0b3I/OiAoYXJnczogYW55KSA9PiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93UmVzaXplPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RHJvcERvd24/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHVuaXF1ZVRhZ3M/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heFRhZ0NvdW50PzogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9TZWxlY3Q/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlPzogKHN0cmluZyB8IG9iamVjdClbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcHBlbmRDdXN0b21UYWdUb0Ryb3BEb3duPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmbG9hdGluZ0xhYmVsRGlyZWN0aW9uPzogR0MuSW5wdXRNYW4uRmxvYXRpbmdMYWJlbERpcmVjdGlvbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmbG9hdGluZ0xhYmVsVHlwZT86IEdDLklucHV0TWFuLkZsb2F0aW5nTGFiZWxUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZsb2F0aW5nTGFiZWxUZXh0Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duVHlwZT86IEdDLklucHV0TWFuLlRhZ0JveERyb3BEb3duVHlwZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93blRyZWVDb25maWc/OiBHQy5JbnB1dE1hbi5UYWdCb3hEcm9wRG93blRyZWVDb25maWc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVscENvbnRlbnQ/OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0hlbHBCdXR0b24/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dDbGVhckJ1dHRvbj86IGJvb2xlYW47XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duQ2xvc2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NUYWdCb3g+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93bk9wZW5lZDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjVGFnQm94PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZm9jdXNJbjogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjVGFnQm94PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZm9jdXNPdXQ6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY1RhZ0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGluc2VydFRhZzogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjVGFnQm94PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlVGFnOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NUYWdCb3g+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY1RhZ0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgaW5pdEdjQ29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLl9pbUN0cmwgPSBuZXcgR0MuSW5wdXRNYW4uR2NUYWdCb3goZWxlbWVudCwgdGhpcyBhcyBhbnkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBiaW5kRXZlbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbUN0cmwuYWRkRXZlbnRMaXN0ZW5lcihHQy5JbnB1dE1hbi5HY1RhZ0JveEV2ZW50LkRyb3BEb3duQ2xvc2VkLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duQ2xvc2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjVGFnQm94RXZlbnQuRHJvcERvd25PcGVuZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcERvd25PcGVuZWQuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NUYWdCb3hFdmVudC5Gb2N1c0luLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzSW4uZW1pdChldmVudEFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NUYWdCb3hFdmVudC5Gb2N1c091dCwgKGV2ZW50QXJncykgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb2N1c091dC5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwuYWRkRXZlbnRMaXN0ZW5lcihHQy5JbnB1dE1hbi5HY1RhZ0JveEV2ZW50Lkluc2VydFRhZywgKGV2ZW50QXJncykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWcuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NUYWdCb3hFdmVudC5SZW1vdmVUYWcsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFnLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjVGFnQm94RXZlbnQuVmFsdWVDaGFuZ2VkLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ltQ3RybC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG59Il19