{"version":3,"file":"asoftwareworld-form-builder-pro-form-builder.mjs","sources":["../../src/components/form-builder/default-controls.ts","../../src/components/form-builder/drag-drop.service.ts","../../src/components/form-builder/drag-drop/drag-drop.ts","../../src/components/form-builder/drag-drop/drag-drop.html","../../src/components/form-builder/form-builder.ts","../../src/components/form-builder/form-builder.html","../../src/components/form-builder/form-builder.module.ts","../../src/components/form-builder/public_api.ts","../../src/components/form-builder/asoftwareworld-form-builder-pro-form-builder.ts"],"sourcesContent":["/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport const SIMPLE_CONTROLS = [\n    {\n        id: '',\n        guid: '',\n        icon: 'title',\n        displayName: 'Header',\n        controlType: 'header',\n        subtype: 'h1',\n        style: 'asw-text-start',\n        label: 'Header'\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'textFields',\n        displayName: 'Text field',\n        controlType: 'textfield',\n        tooltip: 'Enter Text',\n        value: '',\n        label: 'Text field',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        maxlength: 50,\n        minlength: 0\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'shortText',\n        displayName: 'Text area',\n        controlType: 'textarea',\n        tooltip: 'Enter Text',\n        value: '',\n        label: 'Text area',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        maxlength: 50,\n        minlength: 0\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'subject',\n        displayName: 'Paragraph',\n        controlType: 'paragraph',\n        label: 'Paragraph'\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'remove',\n        displayName: 'Divider',\n        controlType: 'divider'\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'toggleOn',\n        displayName: 'Slide Toggle',\n        controlType: 'slide-toggle',\n        label: 'Slide me!',\n        value: false,\n        color: 'primary',\n        isRequired: false,\n        isDisabled: false\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'smartButton',\n        displayName: 'Button',\n        controlType: 'button',\n        tooltip: 'Click button',\n        label: 'Submit',\n        type: 'button',\n        color: 'primary',\n        style: 'mat-raised-button'\n    }\n];\n\nexport const CHOICE_CONTROLS = [\n    {\n        id: '',\n        guid: '',\n        icon: 'corporateFare',\n        displayName: 'Autocomplete',\n        controlType: 'autocomplete',\n        tooltip: 'Select one',\n        label: 'Autocomplete',\n        value: '',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        options: [\n            { key: 'option-1', value: 'Option 1', isChecked: false },\n            { key: 'option-2', value: 'Option 2', isChecked: false },\n            { key: 'option-3', value: 'Option 3', isChecked: false }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'factCheck',\n        displayName: 'Select',\n        controlType: 'select',\n        tooltip: 'Select option',\n        label: 'Select',\n        style: 'outline',\n        value: '',\n        isRequired: false,\n        isDisabled: false,\n        options: [\n            { key: 'option-1', value: 'Option 1', isChecked: false },\n            { key: 'option-2', value: 'Option 2', isChecked: false },\n            { key: 'option-3', value: 'Option 3', isChecked: false }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'checklist',\n        displayName: 'Multi select',\n        controlType: 'multi-select',\n        tooltip: 'Select options',\n        label: 'Multi select',\n        value: '',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        options: [\n            { key: 'option-1', value: 'Option 1', isChecked: false },\n            { key: 'option-2', value: 'Option 2', isChecked: false },\n            { key: 'option-3', value: 'Option 3', isChecked: false }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'radioButtonChecked',\n        displayName: 'Radio Button',\n        controlType: 'radio',\n        tooltip: 'radio',\n        label: 'Radio Button',\n        value: '',\n        isRequired: false,\n        isDisabled: false,\n        labelType: 'text-editor',\n        options: [\n            { key: 'option-1', value: 'Option 1', isChecked: false },\n            { key: 'option-2', value: 'Option 2', isChecked: false },\n            { key: 'option-3', value: 'Option 3', isChecked: false }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'checkbox',\n        displayName: 'Checkbox',\n        controlType: 'checkbox',\n        tooltip: 'checkbox',\n        label: 'Checkbox',\n        isRequired: false,\n        isDisabled: false,\n        labelType: 'text-editor',\n        options: [\n            { key: 'option-1', value: 'Option 1', isChecked: false },\n            { key: 'option-2', value: 'Option 2', isChecked: false },\n            { key: 'option-3', value: 'Option 3', isChecked: false }\n        ]\n    }\n];\n\nexport const ADVANCED_CONTROLS = [\n    {\n        id: '',\n        guid: '',\n        icon: 'numbers',\n        displayName: 'Number',\n        controlType: 'number',\n        tooltip: 'Enter Number',\n        value: '',\n        label: 'Number',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        maxlength: 50,\n        minlength: 0\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'rupee',\n        displayName: 'Currency',\n        controlType: 'currency',\n        tooltip: 'Enter currency',\n        value: '',\n        currencySymbol: '₹',\n        label: 'Currency',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        maxlength: 50,\n        minlength: 0\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'calculate',\n        displayName: 'Calculation',\n        controlType: 'calculation',\n        tooltip: 'Enter calculation',\n        value: '',\n        label: 'Calculation',\n        placeholder: 'Field 1 + Field 2 = ',\n        style: 'outline',\n        operations: []\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'email',\n        displayName: 'Email',\n        controlType: 'email',\n        tooltip: 'Enter email',\n        value: '',\n        label: 'Email',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        maxlength: 50,\n        minlength: 0\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'call',\n        displayName: 'Phone number',\n        controlType: 'phone-number',\n        tooltip: 'Enter phone number',\n        value: '',\n        label: 'Phone number',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        maxlength: 15,\n        minlength: 0\n    },\n    // {\n    //     id: '',\n    //     guid: '',\n    //     icon: 'tag',\n    //     displayName: 'Tags',\n    //     controlType: 'tags',\n    //     tooltip: 'Select tags',\n    //     label: 'Tags',\n    //     value: [],\n    //     style: 'outline',\n    //     isRequired: false,\n    //     isDisabled: false\n    // },\n    {\n        id: '',\n        guid: '',\n        icon: 'link',\n        displayName: 'Url',\n        controlType: 'url',\n        tooltip: 'Enter url',\n        value: '',\n        label: 'Url',\n        style: 'outline',\n        isRequired: false,\n        isDisabled: false,\n        minlength: 0\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'event',\n        displayName: 'Datepicker',\n        controlType: 'datepicker',\n        value: '',\n        tooltip: 'Choose a date',\n        label: 'Datepicker',\n        style: 'outline',\n        type: 'date',\n        mode: 'auto',\n        defaultView: 'month',\n        yearSelector: true,\n        twelveHour: true,\n        isRequired: false,\n        isDisabled: false,\n        isDisableWeekendDates: false\n    },\n    // {\n    //     id: '',\n    //     guid: '',\n    //     icon: 'dateRange',\n    //     displayName: 'Date Range',\n    //     controlType: 'daterange',\n    //     value: '',\n    //     tooltip: 'Choose a date range',\n    //     label: 'Date Range',\n    //     style: 'outline',\n    //     isRequired: false,\n    //     isDisabled: false,\n    //     isDisableWeekendDates: false\n    // },\n    {\n        id: '',\n        guid: '',\n        icon: 'sharedLocation',\n        displayName: 'GPS',\n        controlType: 'gps',\n        label: 'GPS',\n        tooltip: 'Enter Location',\n        latitude: '',\n        longitude: '',\n        style: 'outline',\n        value: '',\n        isRequired: false,\n        isDisabled: false\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'fileUpload',\n        displayName: 'File Upload',\n        controlType: 'fileupload',\n        label: 'File Upload',\n        value: [],\n        minSize: '',\n        maxSize: '',\n        fileTypes: 'rar, zip, png, PNG, pdf, jpg, JPG, jpeg, JPEG, doc, docx, gif, pptx, mp4, mov, flv, avi, mp3, xlsx, xls, csv, MOV',\n        allowMultipleFile: '2',\n        isRequired: false\n    }\n];\n\nexport const DIGITAL_CONTROLS = [\n    {\n        id: '',\n        guid: '',\n        icon: 'image',\n        displayName: 'Image',\n        controlType: 'image',\n        label: 'Image',\n        class: 'asw-text-start',\n        imageShape: 'asw-original',\n        height: 150,\n        width: 150,\n        imageUrl: '',\n        isUploadHide: true\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'gesture',\n        displayName: 'Signature',\n        controlType: 'signature',\n        label: 'Signature',\n        class: 'asw-text-start',\n        imageUrl:\n            'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIATgDUgMBIgACEQEDEQH/xAAVAAEBAAAAAAAAAAAAAAAAAAAACP/EABQQAQAAAAAAAAAAAAAAAAAAAAD/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AqkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//2Q==',\n        height: '80',\n        width: '120',\n        isUploadHide: true\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'draw',\n        displayName: 'Drawing',\n        controlType: 'drawing',\n        label: 'Image',\n        class: 'asw-text-start',\n        imageUrl:\n            'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIATgDUgMBIgACEQEDEQH/xAAVAAEBAAAAAAAAAAAAAAAAAAAACP/EABQQAQAAAAAAAAAAAAAAAAAAAAD/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AqkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//2Q==',\n        isRequired: false,\n        height: '200',\n        width: '600',\n        isUploadHide: true\n    },\n    {\n        id: '',\n        guid: '',\n        icon: 'qrCode',\n        displayName: 'QR Code',\n        controlType: 'qr-code',\n        density: {\n            errorCorrectionLevel: 'Q',\n            mode: 'Byte',\n            typeNumber: 0\n        },\n        logoStyle: {\n            hideBackgroundCircle: true,\n            logoSize: 0.3,\n            logoMargin: 0\n        },\n        backgroundColor: '#ffffff',\n        middleShape: {\n            color: '#000',\n            type: 'smooth'\n        },\n        cornerInnerShape: {\n            color: '#000',\n            type: ''\n        },\n        cornerOuterShape: {\n            color: '#000',\n            type: ''\n        },\n        logo: '',\n        width: 200,\n        height: 200,\n        type: 'canvas',\n        outerMargin: 0,\n        value: ''\n    }\n];\n\nexport const LAYOUT_CONTROLS = [\n    {\n        id: '',\n        guid: '',\n        label: 'Columns',\n        icon: 'column2',\n        displayName: '2 Column',\n        controlType: 'columns',\n        isColumnHidden: false,\n        columns: [\n            {\n                components: [],\n                size: 'md',\n                width: 6\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 6\n            }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        label: 'Columns',\n        icon: 'column3',\n        displayName: '3 Column',\n        controlType: 'columns',\n        isColumnHidden: false,\n        columns: [\n            {\n                components: [],\n                size: 'md',\n                width: 4\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 4\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 4\n            }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        label: 'Columns',\n        icon: 'column4',\n        displayName: '4 Column',\n        controlType: 'columns',\n        isColumnHidden: false,\n        columns: [\n            {\n                components: [],\n                size: 'md',\n                width: 3\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 3\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 3\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 3\n            }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        label: 'Columns',\n        icon: 'leftSplit',\n        displayName: 'Left Split',\n        controlType: 'columns',\n        isColumnHidden: false,\n        columns: [\n            {\n                components: [],\n                size: 'md',\n                width: 8\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 4\n            }\n        ]\n    },\n    {\n        id: '',\n        guid: '',\n        label: 'Columns',\n        icon: 'rightSplit',\n        displayName: 'Right Split',\n        controlType: 'columns',\n        isColumnHidden: false,\n        columns: [\n            {\n                components: [],\n                size: 'md',\n                width: 4\n            },\n            {\n                components: [],\n                size: 'md',\n                width: 8\n            }\n        ]\n    }\n];\n","import { CdkDragMove, CdkDragRelease, CdkDropList } from '@angular/cdk/drag-drop';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DragDropService {\n    dropLists: CdkDropList[] = [];\n    currentHoverDropListId?: string;\n\n    constructor(@Inject(DOCUMENT) private document: Document) {}\n\n    /**\n     * Register adds a new drop list to the dropList array that is used by each cdkDropList.\n     */\n    public register(dropList: CdkDropList): void {\n        this.dropLists.push(dropList);\n    }\n\n    /**\n     * DragMoved determines the correct cdkDropList beneath the mouse pointer.\n     */\n    dragMoved(event: CdkDragMove<any>): void {\n        const elementFromPoint = this.document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y);\n\n        if (!elementFromPoint) {\n            this.currentHoverDropListId = undefined;\n            return;\n        }\n\n        const dropList = elementFromPoint.classList.contains('cdk-drop-list') ? elementFromPoint : elementFromPoint.closest('.cdk-drop-list');\n\n        if (!dropList) {\n            this.currentHoverDropListId = undefined;\n            return;\n        }\n\n        this.currentHoverDropListId = dropList.id;\n    }\n\n    dragReleased(event: CdkDragRelease): void {\n        this.currentHoverDropListId = undefined;\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlOption, CSSFrameworkEnum } from '@asoftwareworld/form-builder-pro/api';\n\n@Component({\n    selector: 'asw-drag-drop',\n    templateUrl: './drag-drop.html'\n})\nexport class AswDragDrop {\n    @Input() control: any;\n    @Input() formContainer: any[] = [];\n    @Input() CSSFramework: CSSFrameworkEnum = CSSFrameworkEnum.Material;\n    @Input() propertyPersonalization: string[] = [];\n    @Input() patterns: ControlOption[] = [];\n    @Output() controlUpdated = new EventEmitter<any>();\n    @Output() controlDeleted = new EventEmitter<number>();\n    @Output() controlDuplicate = new EventEmitter<any>();\n    @Output() controlChange = new EventEmitter<any>();\n    @Output() buttonClick = new EventEmitter<string>();\n\n    updatedControl(control: any): void {\n        this.controlUpdated.emit(control);\n    }\n\n    deleteControl(control: any): void {\n        this.controlDeleted.emit(control);\n    }\n\n    duplicateControl(control: any): void {\n        this.controlDuplicate.emit(control);\n    }\n\n    onSelectionChange(control: any): void {\n        this.controlChange.emit(control);\n    }\n\n    buttonClicked(type: string): void {\n        this.buttonClick.emit(type);\n    }\n}\n","<ng-container *ngIf=\"control as control\">\r\n    <ng-container [ngSwitch]=\"control.controlType\">\r\n        <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n            <asw-autocomplete [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (autocompleteUpdateEvent)=\"updatedControl($event)\"\r\n                (autocompleteDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-autocomplete>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'tags'\">\r\n            <asw-tags [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [patterns]=\"patterns\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (tagsUpdateEvent)=\"updatedControl($event)\"\r\n                (tagsDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-tags>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'header'\">\r\n            <asw-header [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (headerUpdateEvent)=\"updatedControl($event)\"\r\n                (headerDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-header>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'qr-code'\">\r\n            <asw-qrcode [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                (qrCodeUpdateEvent)=\"updatedControl($event)\"\r\n                (qrCodeDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-qrcode>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'image'\">\r\n            <asw-image [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                (imageUpdateEvent)=\"updatedControl($event)\"\r\n                (imageDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-image>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'textfield'\">\r\n            <asw-textfield [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [patterns]=\"patterns\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (textFieldUpdateEvent)=\"updatedControl($event)\"\r\n                (textFieldDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-textfield>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'email'\">\r\n            <asw-textfield [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [patterns]=\"patterns\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (textFieldUpdateEvent)=\"updatedControl($event)\"\r\n                (textFieldDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-textfield>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'url'\">\r\n            <asw-textfield [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [patterns]=\"patterns\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (textFieldUpdateEvent)=\"updatedControl($event)\"\r\n                (textFieldDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-textfield>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'currency'\">\r\n            <asw-number [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [patterns]=\"patterns\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (numberUpdateEvent)=\"updatedControl($event)\"\r\n                (numberDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-number>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'phone-number'\">\r\n            <asw-textfield [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [patterns]=\"patterns\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (textFieldUpdateEvent)=\"updatedControl($event)\"\r\n                (textFieldDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-textfield>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'textarea'\">\r\n            <asw-textfield [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [patterns]=\"patterns\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (textFieldUpdateEvent)=\"updatedControl($event)\"\r\n                (textFieldDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-textfield>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'number'\">\r\n            <asw-number [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [patterns]=\"patterns\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (numberUpdateEvent)=\"updatedControl($event)\"\r\n                (numberDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-number>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'calculation'\">\r\n            <asw-calculation [control]=\"control\"\r\n                [formControls]=\"formContainer\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (calculationUpdateEvent)=\"updatedControl($event)\"\r\n                (calculationDeleteEvent)=\"deleteControl($event)\"\r\n                (aswModelChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-calculation>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'select'\">\r\n            <asw-select [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (selectUpdateEvent)=\"updatedControl($event)\"\r\n                (selectDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-select>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'multi-select'\">\r\n            <asw-multi-select [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (multiSelectUpdateEvent)=\"updatedControl($event)\"\r\n                (multiSelectDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-multi-select>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'radio'\">\r\n            <asw-radio-button [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (radioButtonUpdateEvent)=\"updatedControl($event)\"\r\n                (radioButtonDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-radio-button>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'checkbox'\">\r\n            <asw-checkbox [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [formControls]=\"formContainer\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (checkboxUpdateEvent)=\"updatedControl($event)\"\r\n                (checkboxDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-checkbox>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'datepicker'\">\r\n            <asw-datepicker [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (datepickerUpdateEvent)=\"updatedControl($event)\"\r\n                (datepickerDeleteEvent)=\"deleteControl($event)\"\r\n                (dateChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-datepicker>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'daterange'\">\r\n            <asw-datepicker [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (datepickerUpdateEvent)=\"updatedControl($event)\"\r\n                (datepickerDeleteEvent)=\"deleteControl($event)\"\r\n                (dateChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-datepicker>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'button'\">\r\n            <asw-button [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (buttonUpdateEvent)=\"updatedControl($event)\"\r\n                (buttonDeleteEvent)=\"deleteControl($event)\"\r\n                (buttonClickEvent)=\"buttonClicked($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-button>                                       \r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'paragraph'\">\r\n            <asw-paragraph [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                (paragraphUpdateEvent)=\"updatedControl($event)\"\r\n                (paragraphDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-paragraph>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'divider'\">\r\n            <asw-divider [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                (dividerDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-divider>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'slide-toggle'\">\r\n            <asw-slide-toggle [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (slidetoggleUpdateEvent)=\"updatedControl($event)\"\r\n                (slidetoggleDeleteEvent)=\"deleteControl($event)\"\r\n                (selectionChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-slide-toggle>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'gps'\">\r\n            <asw-gps [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (gpsUpdateEvent)=\"updatedControl($event)\"\r\n                (gpsDeleteEvent)=\"deleteControl($event)\"\r\n                (gpsAddressChange)=\"onSelectionChange($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-gps>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'signature'\">\r\n            <asw-signature [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                (signatureUpdateEvent)=\"updatedControl($event)\"\r\n                (signatureDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-signature>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'drawing'\">\r\n            <asw-drawing [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                (drawingUpdateEvent)=\"updatedControl($event)\"\r\n                (drawingDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-drawing>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'fileupload'\">\r\n            <asw-fileupload [control]=\"control\"\r\n                [isPreviewTemplate]=\"true\"\r\n                [CSSFramework]=\"CSSFramework\"\r\n                [propertyPersonalization]=\"propertyPersonalization\"\r\n                (fileUploadUpdateEvent)=\"updatedControl($event)\"\r\n                (fileUploadDeleteEvent)=\"deleteControl($event)\"\r\n                (duplicateControl)=\"duplicateControl($event)\">\r\n            </asw-fileupload>\r\n        </ng-container>\r\n    </ng-container>\r\n</ng-container>\r\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { CdkDrag, CdkDragDrop, CdkDragMove, CdkDragRelease, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Constants, Icons, NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { AswTranslateService } from '@asoftwareworld/form-builder-pro/core';\nimport { AswJsonPreviewDialog } from '@asoftwareworld/form-builder-pro/form-control/json-preview-dialog';\nimport { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\nimport { ControlOption, CSSFrameworkEnum } from '@asoftwareworld/form-builder-pro/api';\nimport { ADVANCED_CONTROLS, CHOICE_CONTROLS, DIGITAL_CONTROLS, LAYOUT_CONTROLS, SIMPLE_CONTROLS } from './default-controls';\nimport { DragDropService } from './drag-drop.service';\n\n@Component({\n    selector: 'asw-form-builder',\n    templateUrl: './form-builder.html',\n    styleUrls: ['./form-builder.scss']\n})\nexport class AswFormBuilder implements OnInit, AfterViewInit, OnChanges {\n    step = 0;\n    constants: any = Constants;\n\n    // Control list\n    simpleControls: any[] = [];\n    choiceControls: any[] = [];\n    advancedControls: any[] = [];\n    digitalControls: any[] = [];\n    layoutControls: any[] = [];\n    controls: any[] = [];\n\n    // drop items\n    formContainer: any[] = [];\n    icons = Icons;\n\n    @Input() currentLanguage = 'en';\n    @Input() uploadData: any[] = [];\n    @Input() isShowPreviewButton = true;\n    @Input() isShowJsonDataButton = true;\n    @Input() isShowPublishButton = true;\n    @Input() cssFramework: CSSFrameworkEnum = CSSFrameworkEnum.Material;\n    @Input() controlPersonalization: string[] = [];\n    @Input() propertyPersonalization: string[] = [];\n    @Input() controlCollectionName: string = '';\n    @Input() patterns: ControlOption[] = [];\n\n    @Output() previewClick = new EventEmitter<any[]>();\n    @Output() publishClick = new EventEmitter<any[]>();\n\n    @Output() buttonClick = new EventEmitter<any[]>();\n    @Output() aswModelChange = new EventEmitter<any>();\n\n    @ViewChild(CdkDropList) dropList?: CdkDropList;\n    selectedControlId = '';\n\n    allowDropPredicate = (drag: CdkDrag, drop: CdkDropList) => {\n        return this.isDropAllowed(drag, drop);\n    };\n\n    constructor(\n        public translate: AswTranslateService,\n        public dialog: MatDialog,\n        private notificationService: NotificationService,\n        public dragDropService: DragDropService\n    ) {}\n\n    ngOnInit(): void {\n        this.translate.setDefaultLang('en');\n        this.translate.use(this.currentLanguage);\n        this.getControlConfig();\n    }\n\n    private getControlConfig(): void {\n        this.simpleControls = this.excludeControl(SIMPLE_CONTROLS);\n        this.choiceControls = this.excludeControl(CHOICE_CONTROLS);\n        this.advancedControls = this.excludeControl(ADVANCED_CONTROLS);\n        this.digitalControls = this.excludeControl(DIGITAL_CONTROLS);\n        this.layoutControls = this.excludeControl(LAYOUT_CONTROLS);\n        if (!this.isNullOrEmptyOrWhitespace(this.controlCollectionName)) {\n            this.setSingleControlCollection(this.simpleControls);\n            this.setSingleControlCollection(this.choiceControls);\n            this.setSingleControlCollection(this.advancedControls);\n            this.setSingleControlCollection(this.digitalControls);\n            this.setSingleControlCollection(this.layoutControls);\n        }\n    }\n\n    private setSingleControlCollection(controlCollections: any[]): void {\n        controlCollections.forEach((x) => {\n            this.controls.push(x);\n        });\n    }\n\n    isNullOrEmptyOrWhitespace(str: string): boolean {\n        // Check if the string is null or undefined\n        if (str === null || str === undefined) {\n            return true;\n        }\n\n        // Trim the string to remove leading and trailing whitespace, then check if it's empty\n        if (str.trim() === '') {\n            return true;\n        }\n\n        // If none of the above conditions are met, the string is not null, undefined, empty, or whitespace\n        return false;\n    }\n\n    private excludeControl(controls: any[]) {\n        if (this.controlPersonalization.length === 0) return controls;\n        return controls.filter((control) => !this.controlPersonalization.includes(control.controlType));\n    }\n\n    ngAfterViewInit(): void {\n        if (this.dropList) {\n            this.dragDropService.register(this.dropList);\n        }\n    }\n\n    setStep(index: number): void {\n        this.step = index;\n    }\n\n    changeLanguage(): void {\n        this.translate.use(this.currentLanguage);\n    }\n\n    ngOnChanges(): void {\n        this.controls = [];\n        if (this.uploadData.length) {\n            this.formContainer = this.uploadData;\n        }\n        this.getControlConfig();\n    }\n\n    /**\n     * Drops a draggable item inside a drop container.\n     */\n    dropped(event: CdkDragDrop<any[]>): void {\n        const draggedItem = event.item.data;\n        if (event.previousContainer === event.container) {\n            moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n        } else {\n            const previousContainerData = JSON.parse(JSON.stringify(event.previousContainer.data));\n            if (draggedItem) {\n                this.addRemoveControlFromContainer(draggedItem);\n            }\n            this.setGuidId(previousContainerData, event.previousIndex);\n            transferArrayItem(previousContainerData, event.container.data, event.previousIndex, event.currentIndex);\n        }\n    }\n\n    /**\n     * Set id and guid for newly dropped control.\n     * @param previousContainer list of control\n     * @param index control index\n     */\n    private setGuidId(previousContainer: any[], index: number): void {\n        let droppedControl = previousContainer[index];\n        droppedControl = ObjectUtils.generateUUID(droppedControl);\n    }\n\n    private addRemoveControlFromContainer(draggedItem: any, controlAction = 'delete'): void {\n        this.formContainer.filter((control: any, index: number) => {\n            if (control.guid === draggedItem.guid) {\n                switch (controlAction) {\n                    case 'delete':\n                        this.formContainer.splice(index, 1);\n                        break;\n                    case 'update':\n                        this.formContainer.splice(index, 1, draggedItem);\n                        break;\n                    case 'duplicate':\n                        this.formContainer.push(this.resetDuplicateControl(draggedItem));\n                        break;\n                }\n            } else {\n                this.removedChildControl(control, draggedItem, controlAction);\n            }\n        });\n    }\n\n    private removedChildControl(control: any, draggedItem: any, controlAction: string): void {\n        control.columns?.forEach((column: any) => {\n            column.components.forEach((component: any, childIndex: number) => {\n                if (component.guid === draggedItem.guid) {\n                    switch (controlAction) {\n                        case 'delete':\n                            column.components.splice(childIndex, 1);\n                            break;\n                        case 'update':\n                            column.components.splice(childIndex, 1, draggedItem);\n                            break;\n                        case 'duplicate':\n                            column.components.push(this.resetDuplicateControl(draggedItem));\n                            break;\n                    }\n                }\n                if (component.controlType === 'columns') {\n                    this.removedChildControl(component, draggedItem, controlAction);\n                }\n            });\n        });\n    }\n\n    /**\n     * Reset the id, guid, and value of the duplicated control.\n     * @param duplicateControl duplicated control\n     * @returns Refreshed control\n     */\n    private resetDuplicateControl(duplicateControl: any): any {\n        const id = ObjectUtils.UUID();\n        duplicateControl.id = id;\n        duplicateControl.guid = id;\n        if (duplicateControl.controlType === 'fileupload') {\n            duplicateControl.value = [];\n        } else if (duplicateControl.controlType !== 'qr-code') {\n            duplicateControl.value = duplicateControl.controlType === 'slide-toggle' ? false : '';\n        }\n        return duplicateControl;\n    }\n\n    /**\n     * Cdk material is not able to determine the correct drop list. If there is a wrong drop list selected by cdk,\n     * we just disallow the drop by returning false. In that case, cdk automatically selects the next possible\n     * cdkDropList which is the correct.\n     */\n    isDropAllowed(drag: CdkDrag, drop: CdkDropList): boolean {\n        if (this.dragDropService.currentHoverDropListId == null) {\n            return true;\n        }\n        return drop.id === this.dragDropService.currentHoverDropListId;\n    }\n\n    /**\n     * Whenever a cdkDrag is moved, dragMoved determines the correct cdkDropList.\n     */\n    dragMoved(event: CdkDragMove<any>): void {\n        this.dragDropService.dragMoved(event);\n    }\n\n    /**\n     * Whenever a cdkDrag is released, reset the determined cdkDropList\n     */\n    dragReleased(event: CdkDragRelease): void {\n        this.dragDropService.dragReleased(event);\n    }\n\n    /**\n     * Update control from the container\n     * @param control data need to be update\n     */\n    updatedControl(control: any): void {\n        this.addRemoveControlFromContainer(control, 'update');\n    }\n\n    /**\n     * Delete control from the container\n     * @param control data need to be delete\n     */\n    deleteControl(control: any): void {\n        this.addRemoveControlFromContainer(control);\n    }\n\n    /**\n     * Duplicate control from the container\n     * @param control data need to be duplicate\n     */\n    duplicateControl(control: any): void {\n        const duplicatedControl = JSON.parse(JSON.stringify(control));\n        this.addRemoveControlFromContainer(duplicatedControl, 'duplicate');\n    }\n\n    previewTemplate(): void {\n        this.previewClick.emit(this.formContainer);\n    }\n\n    previewJsonData(): void {\n        const dialogRef = this.dialog.open(AswJsonPreviewDialog, {\n            disableClose: true,\n            width: '744px',\n            data: this.formContainer\n        });\n        dialogRef.afterClosed();\n    }\n\n    publishTemplate(): void {\n        this.publishClick.emit(this.formContainer);\n    }\n\n    /**\n     * Validate each control based on type and IsRequired.\n     * @param type Submit | Reset\n     */\n    buttonClicked(type: string): void {\n        if (type === 'reset') {\n            this.formContainer = ObjectUtils.resetForm(this.formContainer);\n        } else {\n            const data = ObjectUtils.validateForm(this.formContainer);\n            if (!data.isFormValid) {\n                this.notificationService.openNotification('Please fill in the following required fields.' + ' \\n \\n' + data.labels.join(', '), 'Close');\n            } else {\n                this.buttonClick.emit(this.formContainer);\n            }\n        }\n    }\n\n    onSelectionChange(control: any): void {\n        if (control.controlType === 'select' || control.controlType === 'radio' || control.controlType === 'autocomplete') {\n            control.options.forEach((option) => {\n                if (control.value === option.key) {\n                    if (option.hideControl) {\n                        const data = option.hideControl;\n                        data.isColumnHidden = true;\n                        this.addRemoveControlFromContainer(data, 'update');\n                    }\n                } else {\n                    if (option.hideControl) {\n                        const data = option.hideControl;\n                        data.isColumnHidden = false;\n                        this.addRemoveControlFromContainer(data, 'update');\n                    }\n                }\n            });\n        }\n        if (control.controlType === 'checkbox' || control.controlType === 'multi-select') {\n            control.options.forEach((option) => {\n                if (control.value.includes(option.key)) {\n                    if (option.hideControl) {\n                        const data = option.hideControl;\n                        data.isColumnHidden = true;\n                        this.addRemoveControlFromContainer(data, 'update');\n                    }\n                } else {\n                    if (option.hideControl) {\n                        const data = option.hideControl;\n                        data.isColumnHidden = false;\n                        this.addRemoveControlFromContainer(data, 'update');\n                    }\n                }\n            });\n        }\n        this.aswModelChange.emit(control);\n    }\n}\n","<div class=\"asw-row\">\r\n    <div class=\"asw-col-md-12\" align=\"right\">\r\n        <select [(ngModel)]=\"currentLanguage\" (change)=\"changeLanguage()\" class=\"asw-select-sm asw-mb-2 asw-me-1\">\r\n            <option *ngFor=\"let lang of constants.languages\" \r\n                [value]=\"lang.key\" [selected]=\"lang.key === translate.currentLang\">\r\n                {{ lang.value }}\r\n            </option>\r\n        </select>\r\n        <button type=\"button\" *ngIf=\"isShowPreviewButton\"\r\n            class=\"asw-button asw-button-primary asw-button-sm asw-mb-2 asw-me-1\"\r\n            (click)=\"previewTemplate()\">\r\n            {{'FormBuilder.Preview' | aswTranslate}}\r\n        </button>\r\n        <button type=\"button\" *ngIf=\"isShowJsonDataButton\"\r\n            class=\"asw-button asw-button-secondary asw-button-sm asw-mb-2 asw-me-1\"\r\n            (click)=\"previewJsonData()\">\r\n            {{'FormBuilder.JsonData' | aswTranslate}}\r\n        </button>\r\n        <button class=\"asw-button asw-button-success asw-button-sm asw-mb-2 asw-me-1\"\r\n            type=\"button\" *ngIf=\"isShowPublishButton\"\r\n            (click)=\"publishTemplate()\">\r\n            {{'FormBuilder.Publish' | aswTranslate}}\r\n        </button>\r\n    </div>\r\n</div>\r\n<div class=\"asw-row\" cdkDropListGroup>\r\n    <div class=\"asw-col-md-3\">\r\n        <div class=\"asw-sticky-top\">\r\n            <mat-accordion>\r\n                <ng-container *ngIf=\"isNullOrEmptyOrWhitespace(this.controlCollectionName); else customAccordion\">\r\n                    <mat-expansion-panel *ngIf=\"simpleControls.length > 0\" [expanded]=\"step === 0\" (opened)=\"setStep(0)\" hideToggle>\r\n                        <mat-expansion-panel-header class=\"asw-expansion-panel-header\">\r\n                            <mat-panel-title>\r\n                                {{'FormBuilder.BasicControls' | aswTranslate}}\r\n                            </mat-panel-title>\r\n                        </mat-expansion-panel-header>\r\n                        <div cdkDropList\r\n                            [cdkDropListData]=\"simpleControls\"\r\n                            [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                            [cdkDropListEnterPredicate]=\"allowDropPredicate\"\r\n                            cdkDropListSortingDisabled>\r\n                            <div class=\"asw-row\">\r\n                                <ng-container *ngFor=\"let item of simpleControls\">\r\n                                    <div class=\"asw-col-md-12\">\r\n                                        <div class=\"asw-alert asw-d-flex asw-alert-primary align-items-center\"\r\n                                            cdkDrag\r\n                                            (cdkDragMoved)=\"dragMoved($event)\"\r\n                                            (cdkDragReleased)=\"dragReleased($event)\">\r\n                                            <div class=\"asw-icon asw-me-1\" [innerHTML]=\"icons[item.icon] | aswSafeHtml\"></div>\r\n                                            {{item.displayName | aswTranslate}}\r\n                                        </div>\r\n                                    </div>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </mat-expansion-panel>\r\n                    <mat-expansion-panel *ngIf=\"choiceControls.length > 0\" [expanded]=\"step === 1\" (opened)=\"setStep(1)\" hideToggle>\r\n                        <mat-expansion-panel-header class=\"asw-expansion-panel-header\">\r\n                            <mat-panel-title>\r\n                                {{'FormBuilder.ChoiceControls' | aswTranslate}}\r\n                            </mat-panel-title>\r\n                        </mat-expansion-panel-header>\r\n                        <div cdkDropList\r\n                            [cdkDropListData]=\"choiceControls\"\r\n                            cdkDropListSortingDisabled\r\n                            [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                            [cdkDropListEnterPredicate]=\"allowDropPredicate\">\r\n                            <div class=\"asw-row\">\r\n                                <ng-container *ngFor=\"let item of choiceControls\">\r\n                                    <div class=\"asw-col-md-12\">\r\n                                        <div class=\"asw-alert asw-d-flex asw-alert-primary align-items-center\"\r\n                                            cdkDrag\r\n                                            (cdkDragMoved)=\"dragMoved($event)\"\r\n                                            (cdkDragReleased)=\"dragReleased($event)\">\r\n                                            <div class=\"asw-icon asw-me-1\" [innerHTML]=\"icons[item.icon] | aswSafeHtml\"></div>\r\n                                            {{item.displayName | aswTranslate}}\r\n                                        </div>\r\n                                    </div>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </mat-expansion-panel>\r\n                    <mat-expansion-panel *ngIf=\"advancedControls.length > 0\" [expanded]=\"step === 2\" (opened)=\"setStep(2)\" hideToggle>\r\n                        <mat-expansion-panel-header class=\"asw-expansion-panel-header\">\r\n                            <mat-panel-title>\r\n                                {{'FormBuilder.AdvancedControls' | aswTranslate}}\r\n                            </mat-panel-title>\r\n                        </mat-expansion-panel-header>\r\n                        <div cdkDropList\r\n                            [cdkDropListData]=\"advancedControls\"\r\n                            cdkDropListSortingDisabled\r\n                            [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                            [cdkDropListEnterPredicate]=\"allowDropPredicate\">\r\n                            <div class=\"asw-row\">\r\n                                <ng-container *ngFor=\"let item of advancedControls\">\r\n                                    <div class=\"asw-col-md-12\">\r\n                                        <div class=\"asw-alert asw-d-flex asw-alert-primary align-items-center\"\r\n                                            cdkDrag\r\n                                            (cdkDragMoved)=\"dragMoved($event)\"\r\n                                            (cdkDragReleased)=\"dragReleased($event)\">\r\n                                            <div class=\"asw-icon asw-me-1\" [innerHTML]=\"icons[item.icon] | aswSafeHtml\"></div>\r\n                                            {{item.displayName | aswTranslate}}\r\n                                        </div>\r\n                                    </div>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </mat-expansion-panel>\r\n                    <mat-expansion-panel *ngIf=\"digitalControls.length > 0\" [expanded]=\"step === 3\" (opened)=\"setStep(3)\" hideToggle>\r\n                        <mat-expansion-panel-header class=\"asw-expansion-panel-header\">\r\n                            <mat-panel-title>\r\n                                {{'FormBuilder.DigitalControls' | aswTranslate}}\r\n                            </mat-panel-title>\r\n                        </mat-expansion-panel-header>\r\n                        <div cdkDropList\r\n                            [cdkDropListData]=\"digitalControls\"\r\n                            cdkDropListSortingDisabled\r\n                            [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                            [cdkDropListEnterPredicate]=\"allowDropPredicate\">\r\n                            <div class=\"asw-row\">\r\n                                <ng-container *ngFor=\"let item of digitalControls\">\r\n                                    <div class=\"asw-col-md-12\">\r\n                                        <div class=\"asw-alert asw-d-flex asw-alert-primary align-items-center\"\r\n                                            cdkDrag\r\n                                            (cdkDragMoved)=\"dragMoved($event)\"\r\n                                            (cdkDragReleased)=\"dragReleased($event)\">\r\n                                            <div class=\"asw-icon asw-me-1\" [innerHTML]=\"icons[item.icon] | aswSafeHtml\"></div>\r\n                                            {{item.displayName | aswTranslate}}\r\n                                        </div>\r\n                                    </div>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </mat-expansion-panel>\r\n                    <mat-expansion-panel *ngIf=\"layoutControls.length > 0\" [expanded]=\"step === 4\" (opened)=\"setStep(4)\" hideToggle>\r\n                        <mat-expansion-panel-header class=\"asw-expansion-panel-header\">\r\n                            <mat-panel-title>\r\n                                {{'FormBuilder.LayoutControls' | aswTranslate}}\r\n                            </mat-panel-title>\r\n                        </mat-expansion-panel-header>\r\n                        <div cdkDropList\r\n                            [cdkDropListData]=\"layoutControls\"\r\n                            cdkDropListSortingDisabled\r\n                            [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                            [cdkDropListEnterPredicate]=\"allowDropPredicate\">\r\n                            <div class=\"asw-row\">\r\n                                <ng-container *ngFor=\"let item of layoutControls\">\r\n                                    <div class=\"asw-col-md-12\">\r\n                                        <div class=\"asw-alert asw-d-flex asw-alert-primary align-items-center\"\r\n                                            cdkDrag\r\n                                            (cdkDragMoved)=\"dragMoved($event)\"\r\n                                            (cdkDragReleased)=\"dragReleased($event)\">\r\n                                            <div class=\"asw-icon asw-me-1\" [innerHTML]=\"icons[item.icon] | aswSafeHtml\"></div>\r\n                                            {{item.displayName | aswTranslate}}\r\n                                        </div>\r\n                                    </div>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </mat-expansion-panel>\r\n                </ng-container>\r\n                <ng-template #customAccordion>\r\n                    <mat-expansion-panel [expanded]=\"step === 0\" (opened)=\"setStep(0)\" hideToggle>\r\n                        <mat-expansion-panel-header class=\"asw-expansion-panel-header\">\r\n                            <mat-panel-title>\r\n                                {{controlCollectionName | aswTranslate}}\r\n                            </mat-panel-title>\r\n                        </mat-expansion-panel-header>\r\n                        <div cdkDropList\r\n                            [cdkDropListData]=\"controls\"\r\n                            [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                            [cdkDropListEnterPredicate]=\"allowDropPredicate\"\r\n                            cdkDropListSortingDisabled>\r\n                            <div class=\"asw-row\">\r\n                                <ng-container *ngFor=\"let item of controls\">\r\n                                    <div class=\"asw-col-md-12\">\r\n                                        <div class=\"asw-alert asw-d-flex asw-alert-primary align-items-center\"\r\n                                            cdkDrag\r\n                                            (cdkDragMoved)=\"dragMoved($event)\"\r\n                                            (cdkDragReleased)=\"dragReleased($event)\">\r\n                                            <div class=\"asw-icon asw-me-1\" [innerHTML]=\"icons[item.icon] | aswSafeHtml\"></div>\r\n                                            {{item.displayName | aswTranslate}}\r\n                                        </div>\r\n                                    </div>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </mat-expansion-panel>\r\n                </ng-template>\r\n            </mat-accordion>\r\n        </div>\r\n    </div>\r\n    <div class=\"asw-col-md-9\">\r\n        <mat-card>\r\n            <h2 class=\"asw-card-header asw-text-center asw-alert-info\" *ngIf=\"formContainer.length === 0\">{{'FormBuilder.DragAndDrop' | aswTranslate}}</h2>\r\n            <mat-card-content>\r\n                <div cdkDropList\r\n                    class=\"asw-list\"\r\n                    id=\"asw-main-drop-area\"\r\n                    [cdkDropListData]=\"formContainer\"\r\n                    [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                    [cdkDropListEnterPredicate]=\"allowDropPredicate\"\r\n                    (cdkDropListDropped)=\"dropped($event)\">\r\n                    <div *ngFor=\"let control of formContainer\"\r\n                        cdkDrag\r\n                        class=\"asw-box\"\r\n                        [cdkDragData]=\"control\"\r\n                        (cdkDragMoved)=\"dragMoved($event)\"\r\n                        (cdkDragReleased)=\"dragReleased($event)\">\r\n                        <div class=\"asw-placeholder\" *cdkDragPlaceholder></div>\r\n                        <ng-container *ngTemplateOutlet=\"childContainer, context:{control:control}\"></ng-container>\r\n                    </div>\r\n                </div>\r\n                <ng-template #childContainer let-control=\"control\">\r\n                    <ng-container [ngSwitch]=\"control.controlType\">\r\n                        <ng-container *ngIf=\"!control.columns; else layout\">\r\n                            <asw-drag-drop [control]=\"control\"\r\n                                [formContainer]=\"formContainer\"\r\n                                [CSSFramework]=\"cssFramework\"\r\n                                [patterns]=\"patterns\"\r\n                                [propertyPersonalization]=\"propertyPersonalization\"\r\n                                (controlUpdated)=\"updatedControl($event)\"\r\n                                (controlDeleted)=\"deleteControl($event)\"\r\n                                (controlDuplicate)=\"duplicateControl($event)\"\r\n                                (buttonClick)=\"buttonClicked($event)\"\r\n                                (controlChange)=\"onSelectionChange($event)\">\r\n                            </asw-drag-drop>\r\n                        </ng-container>\r\n                        <ng-template #layout>\r\n                            <ng-container *ngIf=\"!control.isColumnHidden\">\r\n                                <ng-container *ngSwitchCase=\"'columns'\">\r\n                                    <div class=\"asw-row\">\r\n                                        <div class=\"asw-col-{{column.size}}-{{column.width}}\" *ngFor=\"let column of control.columns\">\r\n                                            <h2 class=\"asw-card-header asw-text-center alert-info asw-alert-info\" *ngIf=\"column.components.length === 0\">{{'FormBuilder.DragAndDrop' | aswTranslate}}</h2>\r\n                                            <div cdkDropList\r\n                                                class=\"asw-child-list\"\r\n                                                [cdkDropListData]=\"column.components\"\r\n                                                [cdkDropListConnectedTo]=\"dragDropService.dropLists\"\r\n                                                [cdkDropListEnterPredicate]=\"allowDropPredicate\"\r\n                                                (cdkDropListDropped)=\"dropped($event)\">\r\n                                                <div *ngFor=\"let component of column.components\"\r\n                                                    cdkDrag\r\n                                                    class=\"asw-child-box\"\r\n                                                    [cdkDragData]=\"component\"\r\n                                                    (cdkDragMoved)=\"dragMoved($event)\"\r\n                                                    (cdkDragReleased)=\"dragReleased($event)\">\r\n                                                    <div class=\"asw-placeholder\" *cdkDragPlaceholder></div>\r\n                                                    <ng-container *ngTemplateOutlet=\"childContainer, context:{control:component}\"></ng-container>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <asw-column [control]=\"control\"\r\n                                        (controlUpdated)=\"updatedControl($event)\"\r\n                                        (controlDeleted)=\"deleteControl($event)\"\r\n                                        (controlDuplicate)=\"duplicateControl($event)\">\r\n                                    </asw-column>\r\n                                </ng-container>\r\n                            </ng-container>\r\n                        </ng-template>\r\n                    </ng-container>\r\n                </ng-template>\r\n            </mat-card-content>\r\n        </mat-card>\r\n    </div>\r\n</div>","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { AswPipeModule, NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { AswLicense, AswTranslateHttpLoader, AswTranslateLoader, AswTranslateModule, WatermarkService } from '@asoftwareworld/form-builder-pro/core';\nimport { AswAutocompleteModule } from '@asoftwareworld/form-builder-pro/form-control/autocomplete';\nimport { AswButtonModule } from '@asoftwareworld/form-builder-pro/form-control/button';\nimport { AswCalculationModule } from '@asoftwareworld/form-builder-pro/form-control/calculation';\nimport { AswCheckboxModule } from '@asoftwareworld/form-builder-pro/form-control/checkbox';\nimport { AswColumnModule } from '@asoftwareworld/form-builder-pro/form-control/column';\nimport { AswDatepickerModule } from '@asoftwareworld/form-builder-pro/form-control/datepicker';\nimport { AswDividerModule } from '@asoftwareworld/form-builder-pro/form-control/divider';\nimport { AswDrawingModule } from '@asoftwareworld/form-builder-pro/form-control/drawing';\nimport { AswFileUploadModule } from '@asoftwareworld/form-builder-pro/form-control/fileupload';\nimport { AswGpsModule } from '@asoftwareworld/form-builder-pro/form-control/gps';\nimport { AswHeaderModule } from '@asoftwareworld/form-builder-pro/form-control/header';\nimport { AswImageModule } from '@asoftwareworld/form-builder-pro/form-control/image';\nimport { AswJsonPreviewDialogModule } from '@asoftwareworld/form-builder-pro/form-control/json-preview-dialog';\nimport { AswMultiSelectModule } from '@asoftwareworld/form-builder-pro/form-control/multi-select';\nimport { AswNumberModule } from '@asoftwareworld/form-builder-pro/form-control/number';\nimport { AswParagraphModule } from '@asoftwareworld/form-builder-pro/form-control/paragraph';\nimport { QrCodeModule } from '@asoftwareworld/form-builder-pro/form-control/qrcode';\nimport { AswRadioButtonModule } from '@asoftwareworld/form-builder-pro/form-control/radio-button';\nimport { AswSelectModule } from '@asoftwareworld/form-builder-pro/form-control/select';\nimport { AswSignatureModule } from '@asoftwareworld/form-builder-pro/form-control/signature';\nimport { AswSlideToggleModule } from '@asoftwareworld/form-builder-pro/form-control/slide-toggle';\nimport { AswTagsModule } from '@asoftwareworld/form-builder-pro/form-control/tags';\nimport { AswTextFieldModule } from '@asoftwareworld/form-builder-pro/form-control/textfield';\nimport { DragDropService } from './drag-drop.service';\nimport { AswDragDrop } from './drag-drop/drag-drop';\nimport { AswFormBuilder } from './form-builder';\n\nexport function HttpLoaderFactory(): any {\n    return new AswTranslateHttpLoader();\n}\n\nexport function initializeLicense(): () => Promise<void> {\n    return () => {\n        AswLicense.validateLicense();\n        return Promise.resolve();\n    };\n}\n\n@NgModule({\n    declarations: [AswFormBuilder, AswDragDrop],\n    exports: [AswFormBuilder, AswDragDrop],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatDialogModule,\n        DragDropModule,\n        ClipboardModule,\n        AswAutocompleteModule,\n        AswButtonModule,\n        AswCheckboxModule,\n        AswDatepickerModule,\n        AswDividerModule,\n        AswDrawingModule,\n        AswGpsModule,\n        AswHeaderModule,\n        AswImageModule,\n        AswMultiSelectModule,\n        AswParagraphModule,\n        AswSelectModule,\n        AswSignatureModule,\n        AswSlideToggleModule,\n        AswTextFieldModule,\n        AswRadioButtonModule,\n        AswJsonPreviewDialogModule,\n        QrCodeModule,\n        AswNumberModule,\n        AswCalculationModule,\n        AswFileUploadModule,\n        MatExpansionModule,\n        MatCardModule,\n        MatGridListModule,\n        AswTranslateModule.forRoot({\n            loader: {\n                provide: AswTranslateLoader,\n                useFactory: HttpLoaderFactory,\n                deps: [HttpClient]\n            }\n        }),\n        AswPipeModule,\n        AswTagsModule,\n        AswColumnModule\n    ],\n    providers: [\n        DragDropService,\n        NotificationService,\n        {\n            provide: APP_INITIALIZER,\n            useFactory: initializeLicense,\n            multi: true\n        },\n        WatermarkService,\n        provideHttpClient(withInterceptorsFromDi())\n    ]\n})\nexport class AswFormBuilderModule {\n    constructor(private watermarkService: WatermarkService) {\n        // Call the showWatermark method when the module is loaded\n        const isValid = AswLicense.isDisplayWatermark();\n        if (isValid) {\n            this.watermarkService.showWatermark();\n        }\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './form-builder';\nexport * from './drag-drop/drag-drop';\nexport * from './form-builder.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i5","i2","i3","i4.DragDropService","i6","i7","i8","i9","i10","i11.AswDragDrop"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAMG;AAEI,MAAM,eAAe,GAAG;AAC3B,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,WAAW,EAAE;AAChB,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE;AACf,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE;AACV;CACJ;AAEM,MAAM,eAAe,GAAG;AAC3B,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK;AACzD;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK;AACzD;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK;AACzD;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK;AACzD;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACxD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK;AACzD;AACJ;CACJ;AAEM,MAAM,iBAAiB,GAAG;AAC7B,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,cAAc,EAAE,GAAG;AACnB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,WAAW,EAAE,sBAAsB;AACnC,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE;AACf,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE;AACd,KAAA;;;;;;;;;;;;;;AAcD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,qBAAqB,EAAE;AAC1B,KAAA;;;;;;;;;;;;;;;AAeD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE;AACf,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,SAAS,EAAE,mHAAmH;AAC9H,QAAA,iBAAiB,EAAE,GAAG;AACtB,QAAA,UAAU,EAAE;AACf;CACJ;AAEM,MAAM,gBAAgB,GAAG;AAC5B,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,YAAY,EAAE;AACjB,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,QAAQ,EACJ,yuGAAyuG;AAC7uG,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,YAAY,EAAE;AACjB,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,QAAQ,EACJ,yuGAAyuG;AAC7uG,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,YAAY,EAAE;AACjB,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,OAAO,EAAE;AACL,YAAA,oBAAoB,EAAE,GAAG;AACzB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,UAAU,EAAE;AACf,SAAA;AACD,QAAA,SAAS,EAAE;AACP,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,UAAU,EAAE;AACf,SAAA;AACD,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,WAAW,EAAE;AACT,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE;AACT,SAAA;AACD,QAAA,gBAAgB,EAAE;AACd,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE;AACT,SAAA;AACD,QAAA,gBAAgB,EAAE;AACd,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE;AACT,SAAA;AACD,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,KAAK,EAAE;AACV;CACJ;AAEM,MAAM,eAAe,GAAG;AAC3B,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,OAAO,EAAE;AACL,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,OAAO,EAAE;AACL,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,OAAO,EAAE;AACL,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,OAAO,EAAE;AACL,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,OAAO,EAAE;AACL,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE;AACV;AACJ;AACJ;CACJ;;MChiBY,eAAe,CAAA;AAIc,IAAA,QAAA;IAHtC,SAAS,GAAkB,EAAE;AAC7B,IAAA,sBAAsB;AAEtB,IAAA,WAAA,CAAsC,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAE9C;;AAEG;AACI,IAAA,QAAQ,CAAC,QAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGjC;;AAEG;AACH,IAAA,SAAS,CAAC,KAAuB,EAAA;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAEzG,IAAI,CAAC,gBAAgB,EAAE;AACnB,YAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS;YACvC;;QAGJ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAErI,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS;YACvC;;AAGJ,QAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,EAAE;;AAG7C,IAAA,YAAY,CAAC,KAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS;;AAnClC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAIJ,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAJnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFZ,MAAM,EAAA,CAAA;;2FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAKgB,MAAM;2BAAC,QAAQ;;;ACXhC;;;;;;AAMG;MASU,WAAW,CAAA;AACX,IAAA,OAAO;IACP,aAAa,GAAU,EAAE;AACzB,IAAA,YAAY,GAAqB,gBAAgB,CAAC,QAAQ;IAC1D,uBAAuB,GAAa,EAAE;IACtC,QAAQ,GAAoB,EAAE;AAC7B,IAAA,cAAc,GAAG,IAAI,YAAY,EAAO;AACxC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAU;AAC3C,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO;AACvC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AAElD,IAAA,cAAc,CAAC,OAAY,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGrC,IAAA,aAAa,CAAC,OAAY,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGrC,IAAA,gBAAgB,CAAC,OAAY,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGvC,IAAA,iBAAiB,CAAC,OAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGpC,IAAA,aAAa,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;uGA7BtB,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,gZCfxB,6xfA4SA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FD7Ra,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;+BACI,eAAe,EAAA,QAAA,EAAA,6xfAAA,EAAA;8BAIhB,OAAO,EAAA,CAAA;sBAAf;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AEzBL;;;;;;AAMG;MAkBU,cAAc,CAAA;AAyCZ,IAAA,SAAA;AACA,IAAA,MAAA;AACC,IAAA,mBAAA;AACD,IAAA,eAAA;IA3CX,IAAI,GAAG,CAAC;IACR,SAAS,GAAQ,SAAS;;IAG1B,cAAc,GAAU,EAAE;IAC1B,cAAc,GAAU,EAAE;IAC1B,gBAAgB,GAAU,EAAE;IAC5B,eAAe,GAAU,EAAE;IAC3B,cAAc,GAAU,EAAE;IAC1B,QAAQ,GAAU,EAAE;;IAGpB,aAAa,GAAU,EAAE;IACzB,KAAK,GAAG,KAAK;IAEJ,eAAe,GAAG,IAAI;IACtB,UAAU,GAAU,EAAE;IACtB,mBAAmB,GAAG,IAAI;IAC1B,oBAAoB,GAAG,IAAI;IAC3B,mBAAmB,GAAG,IAAI;AAC1B,IAAA,YAAY,GAAqB,gBAAgB,CAAC,QAAQ;IAC1D,sBAAsB,GAAa,EAAE;IACrC,uBAAuB,GAAa,EAAE;IACtC,qBAAqB,GAAW,EAAE;IAClC,QAAQ,GAAoB,EAAE;AAE7B,IAAA,YAAY,GAAG,IAAI,YAAY,EAAS;AACxC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAS;AAExC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAS;AACvC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAO;AAE1B,IAAA,QAAQ;IAChC,iBAAiB,GAAG,EAAE;AAEtB,IAAA,kBAAkB,GAAG,CAAC,IAAa,EAAE,IAAiB,KAAI;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AACzC,KAAC;AAED,IAAA,WAAA,CACW,SAA8B,EAC9B,MAAiB,EAChB,mBAAwC,EACzC,eAAgC,EAAA;QAHhC,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACpB,IAAe,CAAA,eAAA,GAAf,eAAe;;IAG1B,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,gBAAgB,EAAE;;IAGnB,gBAAgB,GAAA;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC;AACpD,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC;AACpD,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACtD,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC;AACrD,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC;;;AAIpD,IAAA,0BAA0B,CAAC,kBAAyB,EAAA;AACxD,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,SAAC,CAAC;;AAGN,IAAA,yBAAyB,CAAC,GAAW,EAAA;;QAEjC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AACnC,YAAA,OAAO,IAAI;;;AAIf,QAAA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACnB,YAAA,OAAO,IAAI;;;AAIf,QAAA,OAAO,KAAK;;AAGR,IAAA,cAAc,CAAC,QAAe,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,QAAQ;QAC7D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;IAGnG,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAIpD,IAAA,OAAO,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;IAGrB,cAAc,GAAA;QACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;;IAG5C,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;;QAExC,IAAI,CAAC,gBAAgB,EAAE;;AAG3B;;AAEG;AACH,IAAA,OAAO,CAAC,KAAyB,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;QACnC,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC7C,YAAA,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;;aAC3E;AACH,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACtF,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC;;YAEnD,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,KAAK,CAAC,aAAa,CAAC;AAC1D,YAAA,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;;;AAI/G;;;;AAIG;IACK,SAAS,CAAC,iBAAwB,EAAE,KAAa,EAAA;AACrD,QAAA,IAAI,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAC7C,QAAA,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC;;AAGrD,IAAA,6BAA6B,CAAC,WAAgB,EAAE,aAAa,GAAG,QAAQ,EAAA;QAC5E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,KAAa,KAAI;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;gBACnC,QAAQ,aAAa;AACjB,oBAAA,KAAK,QAAQ;wBACT,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;wBACnC;AACJ,oBAAA,KAAK,QAAQ;wBACT,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC;wBAChD;AACJ,oBAAA,KAAK,WAAW;AACZ,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;wBAChE;;;iBAEL;gBACH,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;;AAErE,SAAC,CAAC;;AAGE,IAAA,mBAAmB,CAAC,OAAY,EAAE,WAAgB,EAAE,aAAqB,EAAA;QAC7E,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAW,KAAI;YACrC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAc,EAAE,UAAkB,KAAI;gBAC7D,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;oBACrC,QAAQ,aAAa;AACjB,wBAAA,KAAK,QAAQ;4BACT,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;4BACvC;AACJ,wBAAA,KAAK,QAAQ;4BACT,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,WAAW,CAAC;4BACpD;AACJ,wBAAA,KAAK,WAAW;AACZ,4BAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;4BAC/D;;;AAGZ,gBAAA,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE;oBACrC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC;;AAEvE,aAAC,CAAC;AACN,SAAC,CAAC;;AAGN;;;;AAIG;AACK,IAAA,qBAAqB,CAAC,gBAAqB,EAAA;AAC/C,QAAA,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE;AAC7B,QAAA,gBAAgB,CAAC,EAAE,GAAG,EAAE;AACxB,QAAA,gBAAgB,CAAC,IAAI,GAAG,EAAE;AAC1B,QAAA,IAAI,gBAAgB,CAAC,WAAW,KAAK,YAAY,EAAE;AAC/C,YAAA,gBAAgB,CAAC,KAAK,GAAG,EAAE;;AACxB,aAAA,IAAI,gBAAgB,CAAC,WAAW,KAAK,SAAS,EAAE;AACnD,YAAA,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,WAAW,KAAK,cAAc,GAAG,KAAK,GAAG,EAAE;;AAEzF,QAAA,OAAO,gBAAgB;;AAG3B;;;;AAIG;IACH,aAAa,CAAC,IAAa,EAAE,IAAiB,EAAA;QAC1C,IAAI,IAAI,CAAC,eAAe,CAAC,sBAAsB,IAAI,IAAI,EAAE;AACrD,YAAA,OAAO,IAAI;;QAEf,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,sBAAsB;;AAGlE;;AAEG;AACH,IAAA,SAAS,CAAC,KAAuB,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;;AAGzC;;AAEG;AACH,IAAA,YAAY,CAAC,KAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC;;AAG5C;;;AAGG;AACH,IAAA,cAAc,CAAC,OAAY,EAAA;AACvB,QAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,QAAQ,CAAC;;AAGzD;;;AAGG;AACH,IAAA,aAAa,CAAC,OAAY,EAAA;AACtB,QAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;;AAG/C;;;AAGG;AACH,IAAA,gBAAgB,CAAC,OAAY,EAAA;AACzB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,6BAA6B,CAAC,iBAAiB,EAAE,WAAW,CAAC;;IAGtE,eAAe,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAG9C,eAAe,GAAA;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACrD,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE;;IAG3B,eAAe,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;AAG9C;;;AAGG;AACH,IAAA,aAAa,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;;aAC3D;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,+CAA+C,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;;iBACpI;gBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;;;AAKrD,IAAA,iBAAiB,CAAC,OAAY,EAAA;AAC1B,QAAA,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,cAAc,EAAE;YAC/G,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,EAAE;AAC9B,oBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACpB,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;AAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,wBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC;;;qBAEnD;AACH,oBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACpB,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;AAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,wBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC;;;AAG9D,aAAC,CAAC;;AAEN,QAAA,IAAI,OAAO,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,CAAC,WAAW,KAAK,cAAc,EAAE;YAC9E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACpC,oBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACpB,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;AAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,wBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC;;;qBAEnD;AACH,oBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACpB,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;AAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,wBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC;;;AAG9D,aAAC,CAAC;;AAEN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;;uGAnU5B,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiCZ,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzD1B,0jjBAyQM,EAAA,MAAA,EAAA,CAAA,4oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;2FDjPO,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,0jjBAAA,EAAA,MAAA,EAAA,CAAA,4oDAAA,CAAA,EAAA;iLAoBnB,eAAe,EAAA,CAAA;sBAAvB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBAES,WAAW,EAAA,CAAA;sBAApB;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBAEuB,QAAQ,EAAA,CAAA;sBAA/B,SAAS;uBAAC,WAAW;;;AEzD1B;;;;;;AAMG;SAyCa,iBAAiB,GAAA;IAC7B,OAAO,IAAI,sBAAsB,EAAE;AACvC;SAEgB,iBAAiB,GAAA;AAC7B,IAAA,OAAO,MAAK;QACR,UAAU,CAAC,eAAe,EAAE;AAC5B,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,KAAC;AACL;MA2Da,oBAAoB,CAAA;AACT,IAAA,gBAAA;AAApB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAEhC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,EAAE;QAC/C,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;;;uGALpC,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAxDd,YAAA,EAAA,CAAA,cAAc,EAAE,WAAW,aAGtC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,oBAAoB;YACpB,kBAAkB;YAClB,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,0BAA0B;YAC1B,YAAY;YACZ,eAAe;YACf,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,aAAa;AACb,YAAA,iBAAiB,yBAQjB,aAAa;YACb,aAAa;YACb,eAAe,CAAA,EAAA,OAAA,EAAA,CAzCT,cAAc,EAAE,WAAW,CAAA,EAAA,CAAA;AAuD5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAZlB,SAAA,EAAA;YACP,eAAe;YACf,mBAAmB;AACnB,YAAA;AACI,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,iBAAiB;AAC7B,gBAAA,KAAK,EAAE;AACV,aAAA;YACD,gBAAgB;YAChB,iBAAiB,CAAC,sBAAsB,EAAE;AAC7C,SAAA,EAAA,OAAA,EAAA,CAnDG,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,oBAAoB;YACpB,kBAAkB;YAClB,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,0BAA0B;YAC1B,YAAY;YACZ,eAAe;YACf,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,aAAa;YACb,iBAAiB;YACjB,kBAAkB,CAAC,OAAO,CAAC;AACvB,gBAAA,MAAM,EAAE;AACJ,oBAAA,OAAO,EAAE,kBAAkB;AAC3B,oBAAA,UAAU,EAAE,iBAAiB;oBAC7B,IAAI,EAAE,CAAC,UAAU;AACpB;aACJ,CAAC;YACF,aAAa;YACb,aAAa;YACb,eAAe,CAAA,EAAA,CAAA;;2FAcV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAzDhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,eAAe;wBACf,cAAc;wBACd,eAAe;wBACf,qBAAqB;wBACrB,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,oBAAoB;wBACpB,kBAAkB;wBAClB,eAAe;wBACf,kBAAkB;wBAClB,oBAAoB;wBACpB,kBAAkB;wBAClB,oBAAoB;wBACpB,0BAA0B;wBAC1B,YAAY;wBACZ,eAAe;wBACf,oBAAoB;wBACpB,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,iBAAiB;wBACjB,kBAAkB,CAAC,OAAO,CAAC;AACvB,4BAAA,MAAM,EAAE;AACJ,gCAAA,OAAO,EAAE,kBAAkB;AAC3B,gCAAA,UAAU,EAAE,iBAAiB;gCAC7B,IAAI,EAAE,CAAC,UAAU;AACpB;yBACJ,CAAC;wBACF,aAAa;wBACb,aAAa;wBACb;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,eAAe;wBACf,mBAAmB;AACnB,wBAAA;AACI,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,UAAU,EAAE,iBAAiB;AAC7B,4BAAA,KAAK,EAAE;AACV,yBAAA;wBACD,gBAAgB;wBAChB,iBAAiB,CAAC,sBAAsB,EAAE;AAC7C;AACJ,iBAAA;;;AClHD;;;;;;AAMG;;ACNH;;AAEG;;;;"}