UNPKG

@syncfusion/ej2-angular-inputs

Version:

A package of Essential JS 2 input components such as Textbox, Color-picker, Masked-textbox, Numeric-textbox, Slider, Upload, and Form-validator that is used to get input from the users. for Angular

193 lines 22.3 kB
import { FormValidator } from '@syncfusion/ej2-inputs'; export class FormValidators { //max validation static max(number) { let max = number; return (control) => { //tslint:disable-next-line let result = FormValidator.checkValidator.max({ value: control.value, param: max }); if (result === true) { return null; } else { return { 'max': true }; } }; } // min validation static min(number) { let min = number; return (control) => { //tslint:disable-next-line let result = FormValidator.checkValidator.min({ value: control.value, param: min }); if (result === true) { return null; } else { return { 'min': true }; } }; } // Credit card validation static creditcard(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.creditcard({ value: control.value }); if (result === true) { return null; } else { return { 'cardno': true }; } } // date validation static date(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.date({ value: control.value }); if (result === true) { return null; } else { return { 'date': true }; } } // Date-ISO validation static dateIso(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.dateIso({ value: control.value }); if (result === true) { return null; } else { return { 'dateiso': true }; } } // Digit validation static digits(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.digits({ value: control.value }); if (result === true) { return null; } else { return { 'digit': true }; } } // Email validation static email(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.email({ value: control.value }); if (result === true) { return null; } else { return { 'email': true }; } } //maxlength validation static maxLength(number) { let maxlength = number; return (control) => { //tslint:disable-next-line let result = FormValidator.checkValidator.maxLength({ value: control.value, param: maxlength }); if (result === true) { return null; } else { return { 'maxlength': true }; } }; } //minlength validation static minLength(number) { let minlength = number; return (control) => { //tslint:disable-next-line let result = FormValidator.checkValidator.minLength({ value: control.value, param: minlength }); if (result === true) { return null; } else { return { 'minlength': true }; } }; } //number validation static number(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.number({ value: control.value }); if (result === true) { return null; } else { return { 'number': true }; } } // required validation static required(control) { //tslint:disable-next-line let result = (control.value === null) ? false : FormValidator.checkValidator.required({ value: control.value }); if (result === true) { return null; } else { return { 'required': true }; } } // Telephone number validation static tel(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.tel({ value: control.value }); if (result === true) { return null; } else { return { 'telno': true }; } } // Url validation static url(control) { //tslint:disable-next-line let result = FormValidator.checkValidator.url({ value: control.value }); if (result === true) { return null; } else { return { 'url': true }; } } // RangeLength validation static rangeLength(number1, number2) { let minRL = number1; let maxRL = number2; //tslint:disable-next-line let param = [minRL, maxRL]; return (control) => { //tslint:disable-next-line let result = FormValidator.checkValidator.rangeLength({ value: control.value, param: param }); if (result === true) { return null; } else { return { 'rangelength': true }; } }; } // Range validation static range(number1, number2) { let minR = number1; let maxR = number2; //tslint:disable-next-line let param1 = [minR, maxR]; return (control) => { //tslint:disable-next-line let result = FormValidator.checkValidator.range({ value: control.value, param: param1 }); if (result === true) { return null; } else { return { 'range': true }; } }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZm9ybS12YWxpZGF0b3IvZm9ybS12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE1BQU0sT0FBTyxjQUFjO0lBRXZCLGdCQUFnQjtJQUVULE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBbUI7UUFDakMsSUFBSSxHQUFHLEdBQWdCLE1BQU0sQ0FBQztRQUM5QixPQUFPLENBQUMsT0FBd0IsRUFBcUMsRUFBRTtZQUNuRSwwQkFBMEI7WUFDMUIsSUFBSSxNQUFNLEdBQWEsYUFBcUIsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdEcsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNmO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDMUI7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCO0lBRVYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFtQjtRQUNqQyxJQUFJLEdBQUcsR0FBZ0IsTUFBTSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1lBQ25FLDBCQUEwQjtZQUMxQixJQUFJLE1BQU0sR0FBYSxhQUFxQixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN0RyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUMxQjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCx5QkFBeUI7SUFFbEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUF3QjtRQUM3QywwQkFBMEI7UUFDMUIsSUFBSSxNQUFNLEdBQWEsYUFBcUIsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtJQUVYLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBd0I7UUFDdkMsMEJBQTBCO1FBQzFCLElBQUksTUFBTSxHQUFhLGFBQXFCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxzQkFBc0I7SUFFZixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQXdCO1FBQzFDLDBCQUEwQjtRQUMxQixJQUFJLE1BQU0sR0FBYSxhQUFxQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsbUJBQW1CO0lBRVosTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUF3QjtRQUN6QywwQkFBMEI7UUFDMUIsSUFBSSxNQUFNLEdBQWEsYUFBcUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtJQUVaLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBd0I7UUFDeEMsMEJBQTBCO1FBQzFCLElBQUksTUFBTSxHQUFhLGFBQXFCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxzQkFBc0I7SUFFZixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWM7UUFDbEMsSUFBSSxTQUFTLEdBQVcsTUFBTSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1lBQ25FLDBCQUEwQjtZQUMxQixJQUFJLE1BQU0sR0FBYSxhQUFxQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNsSCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxzQkFBc0I7SUFFZixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWM7UUFDbEMsSUFBSSxTQUFTLEdBQVcsTUFBTSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1lBQ25FLDBCQUEwQjtZQUMxQixJQUFJLE1BQU0sR0FBYSxhQUFxQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNsSCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxtQkFBbUI7SUFFWixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQXdCO1FBQ3pDLDBCQUEwQjtRQUMxQixJQUFJLE1BQU0sR0FBYSxhQUFxQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0YsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQsc0JBQXNCO0lBRWYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUF3QjtRQUMzQywwQkFBMEI7UUFDMUIsSUFBSSxNQUFNLEdBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLGFBQXFCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsSSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUNJO1lBQ0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFFRCw4QkFBOEI7SUFFdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUF3QjtRQUN0QywwQkFBMEI7UUFDMUIsSUFBSSxNQUFNLEdBQWEsYUFBcUIsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtJQUVWLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBd0I7UUFDdEMsMEJBQTBCO1FBQzFCLElBQUksTUFBTSxHQUFhLGFBQXFCLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRCx5QkFBeUI7SUFFbEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUN0RCxJQUFJLEtBQUssR0FBVyxPQUFPLENBQUM7UUFDNUIsSUFBSSxLQUFLLEdBQVcsT0FBTyxDQUFDO1FBQzVCLDBCQUEwQjtRQUMxQixJQUFJLEtBQUssR0FBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsT0FBd0IsRUFBcUMsRUFBRTtZQUNuRSwwQkFBMEI7WUFDMUIsSUFBSSxNQUFNLEdBQWEsYUFBcUIsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEgsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNmO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDbEM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO0lBRVosTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUNoRCxJQUFJLElBQUksR0FBVyxPQUFPLENBQUM7UUFDM0IsSUFBSSxJQUFJLEdBQVcsT0FBTyxDQUFDO1FBQzNCLDBCQUEwQjtRQUMxQixJQUFJLE1BQU0sR0FBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsT0FBd0IsRUFBcUMsRUFBRTtZQUNuRSwwQkFBMEI7WUFDMUIsSUFBSSxNQUFNLEdBQWEsYUFBcUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0csSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNmO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDNUI7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvciB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1pbnB1dHMnO1xuXG5leHBvcnQgY2xhc3MgRm9ybVZhbGlkYXRvcnMge1xuXG4gICAgLy9tYXggdmFsaWRhdGlvblxuXG4gICAgcHVibGljIHN0YXRpYyBtYXgobnVtYmVyOiBudW1iZXJ8RGF0ZSk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgbGV0IG1heDogbnVtYmVyfERhdGUgPSBudW1iZXI7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgICAgICAgIC8vdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gKEZvcm1WYWxpZGF0b3IgYXMgYW55KS5jaGVja1ZhbGlkYXRvci5tYXgoeyB2YWx1ZTogY29udHJvbC52YWx1ZSwgcGFyYW06IG1heCB9KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJ21heCc6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBtaW4gdmFsaWRhdGlvblxuXG4gICAgcHVibGljIHN0YXRpYyBtaW4obnVtYmVyOiBudW1iZXJ8RGF0ZSk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgbGV0IG1pbjogbnVtYmVyfERhdGUgPSBudW1iZXI7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgICAgICAgIC8vdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gKEZvcm1WYWxpZGF0b3IgYXMgYW55KS5jaGVja1ZhbGlkYXRvci5taW4oeyB2YWx1ZTogY29udHJvbC52YWx1ZSwgcGFyYW06IG1pbiB9KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJ21pbic6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDcmVkaXQgY2FyZCB2YWxpZGF0aW9uXG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWRpdGNhcmQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IuY3JlZGl0Y2FyZCh7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7ICdjYXJkbm8nOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIHZhbGlkYXRpb25cblxuICAgIHB1YmxpYyBzdGF0aWMgZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwge1xuICAgICAgICAvL3RzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gKEZvcm1WYWxpZGF0b3IgYXMgYW55KS5jaGVja1ZhbGlkYXRvci5kYXRlKHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgJ2RhdGUnOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXRlLUlTTyB2YWxpZGF0aW9uXG5cbiAgICBwdWJsaWMgc3RhdGljIGRhdGVJc28oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IuZGF0ZUlzbyh7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7ICdkYXRlaXNvJzogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGlnaXQgdmFsaWRhdGlvblxuXG4gICAgcHVibGljIHN0YXRpYyBkaWdpdHMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IuZGlnaXRzKHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgJ2RpZ2l0JzogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW1haWwgdmFsaWRhdGlvblxuXG4gICAgcHVibGljIHN0YXRpYyBlbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwge1xuICAgICAgICAvL3RzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gKEZvcm1WYWxpZGF0b3IgYXMgYW55KS5jaGVja1ZhbGlkYXRvci5lbWFpbCh7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7ICdlbWFpbCc6IHRydWUgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vbWF4bGVuZ3RoIHZhbGlkYXRpb25cblxuICAgIHB1YmxpYyBzdGF0aWMgbWF4TGVuZ3RoKG51bWJlcjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICBsZXQgbWF4bGVuZ3RoOiBudW1iZXIgPSBudW1iZXI7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgICAgICAgIC8vdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gKEZvcm1WYWxpZGF0b3IgYXMgYW55KS5jaGVja1ZhbGlkYXRvci5tYXhMZW5ndGgoeyB2YWx1ZTogY29udHJvbC52YWx1ZSwgcGFyYW06IG1heGxlbmd0aCB9KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJ21heGxlbmd0aCc6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvL21pbmxlbmd0aCB2YWxpZGF0aW9uXG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkxlbmd0aChudW1iZXI6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgbGV0IG1pbmxlbmd0aDogbnVtYmVyID0gbnVtYmVyO1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICAvL3RzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IubWluTGVuZ3RoKHsgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHBhcmFtOiBtaW5sZW5ndGggfSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7ICdtaW5sZW5ndGgnOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy9udW1iZXIgdmFsaWRhdGlvblxuXG4gICAgcHVibGljIHN0YXRpYyBudW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IubnVtYmVyKHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgJ251bWJlcic6IHRydWUgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlcXVpcmVkIHZhbGlkYXRpb25cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVxdWlyZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChjb250cm9sLnZhbHVlID09PSBudWxsKSA/IGZhbHNlIDogKEZvcm1WYWxpZGF0b3IgYXMgYW55KS5jaGVja1ZhbGlkYXRvci5yZXF1aXJlZCh7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7ICdyZXF1aXJlZCc6IHRydWUgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRlbGVwaG9uZSBudW1iZXIgdmFsaWRhdGlvblxuXG4gICAgcHVibGljIHN0YXRpYyB0ZWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IudGVsKHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgJ3RlbG5vJzogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXJsIHZhbGlkYXRpb25cblxuICAgIHB1YmxpYyBzdGF0aWMgdXJsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XG4gICAgICAgIC8vdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSAoRm9ybVZhbGlkYXRvciBhcyBhbnkpLmNoZWNrVmFsaWRhdG9yLnVybCh7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7ICd1cmwnOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSYW5nZUxlbmd0aCB2YWxpZGF0aW9uXG5cbiAgICBwdWJsaWMgc3RhdGljIHJhbmdlTGVuZ3RoKG51bWJlcjE6IG51bWJlciwgbnVtYmVyMjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICBsZXQgbWluUkw6IG51bWJlciA9IG51bWJlcjE7XG4gICAgICAgIGxldCBtYXhSTDogbnVtYmVyID0gbnVtYmVyMjtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHBhcmFtOiBhbnkgPSBbbWluUkwsIG1heFJMXTtcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xuICAgICAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSAoRm9ybVZhbGlkYXRvciBhcyBhbnkpLmNoZWNrVmFsaWRhdG9yLnJhbmdlTGVuZ3RoKHsgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHBhcmFtOiBwYXJhbSB9KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJ3JhbmdlbGVuZ3RoJzogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIFJhbmdlIHZhbGlkYXRpb25cblxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZ2UobnVtYmVyMTogbnVtYmVyLCBudW1iZXIyOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIGxldCBtaW5SOiBudW1iZXIgPSBudW1iZXIxO1xuICAgICAgICBsZXQgbWF4UjogbnVtYmVyID0gbnVtYmVyMjtcbiAgICAgICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgbGV0IHBhcmFtMTogYW55ID0gW21pblIsIG1heFJdO1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICAvL3RzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IChGb3JtVmFsaWRhdG9yIGFzIGFueSkuY2hlY2tWYWxpZGF0b3IucmFuZ2UoeyB2YWx1ZTogY29udHJvbC52YWx1ZSwgcGFyYW06IHBhcmFtMSB9KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJ3JhbmdlJzogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=