{"version":3,"file":"sowatech-shared-utilities.mjs","sources":["../../../projects/shared/utilities/bank-account-validation.service.ts","../../../projects/shared/utilities/communication.service.ts","../../../projects/shared/utilities/i18n.service.ts","../../../projects/shared/utilities/print.service.ts","../../../projects/shared/utilities/safe-html/safe-html.pipe.ts","../../../projects/shared/utilities/stateMachine.service.ts","../../../projects/shared/utilities/utilities.module.ts","../../../projects/shared/utilities/functions.ts","../../../projects/shared/utilities/ng-select-aria-label.directive.ts","../../../projects/shared/utilities/sowatech-shared-utilities.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class BankAccountValidationService {\r\n    public validateBankAccount(iban: string, bic: string): BankAccountValidationFlags {\r\n        let resultFlags: BankAccountValidationFlags = BankAccountValidationFlags.valid;\r\n        if (!this.validateIBAN(iban)) resultFlags |= BankAccountValidationFlags.invalidIBAN;\r\n        if (!this.validateBIC(bic)) resultFlags |= BankAccountValidationFlags.invalidBIC;\r\n        return resultFlags;\r\n    }\r\n\r\n    public validateBIC(bic: string): boolean {\r\n        try {\r\n            if (bic == null)\r\n                return true;\r\n            let valid = true;\r\n            //if (bic.length != 0 && bic.length != 8 && bic.length != 11)\r\n            //    valid = false;\r\n            if (bic.length != 0 && !/^[a-zA-Z]+$/.test(bic.substring(0, 5)))\r\n                valid = false;\r\n            if (bic[6] == '0' || bic[6] == '1')\r\n                valid = false;\r\n            if (bic.length > 7 && bic[7].toUpperCase() == 'O')\r\n                valid = false;\r\n            if (bic.length == 11 && bic[8].toUpperCase() == 'X' && !(bic[9].toUpperCase() == 'X' && bic[10].toUpperCase() == 'X'))\r\n                valid = false;\r\n            return valid;\r\n        }\r\n        catch {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public validateIBAN(iban: string): boolean {\r\n        try {\r\n            if (iban == null || iban.length == 0)\r\n                return true;\r\n            const CODE_LENGTHS = {\r\n                AD: 24, AE: 23, AT: 20, AZ: 28, BA: 20, BE: 16, BG: 22, BH: 22, BR: 29,\r\n                CH: 21, CR: 21, CY: 28, CZ: 24, DE: 22, DK: 18, DO: 28, EE: 20, ES: 24,\r\n                FI: 18, FO: 18, FR: 27, GB: 22, GI: 23, GL: 18, GR: 27, GT: 28, HR: 21,\r\n                HU: 28, IE: 22, IL: 23, IS: 26, IT: 27, JO: 30, KW: 30, KZ: 20, LB: 28,\r\n                LI: 21, LT: 20, LU: 20, LV: 21, MC: 27, MD: 24, ME: 22, MK: 19, MR: 27,\r\n                MT: 31, MU: 30, NL: 18, NO: 15, PK: 24, PL: 28, PS: 29, PT: 25, QA: 29,\r\n                RO: 24, RS: 22, SA: 24, SE: 24, SI: 19, SK: 24, SM: 27, TN: 24, TR: 26\r\n            };\r\n            const replacedIban = iban.toUpperCase().replace(/[^A-Z0-9]/g, '');\r\n            const code = replacedIban.match(/^([A-Z]{2})(\\d{2})([A-Z\\d]+)$/);\r\n            if (!code || replacedIban.length !== CODE_LENGTHS[code[1]])\r\n                return false;\r\n\r\n            const digits = (code[3] + code[1] + code[2]).replace(/[A-Z]/g, (letter) => (letter.charCodeAt(0) - 55).toString());\r\n            return this.mod97(digits) === 1;\r\n        }\r\n        catch {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    private mod97(string) {\r\n        let checksum = string.slice(0, 2); let fragment;\r\n        for (let offset = 2; offset < string.length; offset += 7) {\r\n            fragment = String(checksum) + string.substring(offset, offset + 7);\r\n            checksum = parseInt(fragment, 10) % 97;\r\n        }\r\n        return checksum;\r\n    }\r\n}\r\n\r\n\r\nexport enum BankAccountValidationFlags { valid = 0, invalidIBAN = 2, invalidBIC = 4, }\r\n\r\nexport class BankAccountValidationFlagsHelper {\r\n    public static getErrorTexts(flags: BankAccountValidationFlags): string[] {\r\n        const result = [];\r\n        if ((flags & BankAccountValidationFlags.invalidBIC) == BankAccountValidationFlags.invalidBIC) result.push($localize`:@@BankAccount.InvalidBic.dsp.Label:Ungültige BIC`);\r\n        if ((flags & BankAccountValidationFlags.invalidIBAN) == BankAccountValidationFlags.invalidIBAN) result.push($localize`:@@BankAccount.InvalidIban.dsp.Label:Ungültige IBAN`);\r\n        return result;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class CommunicationService {\r\n\r\n    constructor(private logger: LoggerService) {\r\n    }\r\n\r\n    public static currentHandleCreatorNumber = 0;\r\n\r\n    public createChannel(): ChannelHandle {\r\n        CommunicationService.currentHandleCreatorNumber++;\r\n        const handle = CommunicationService.currentHandleCreatorNumber.toString();\r\n\r\n        if (!this.channels[handle])\r\n            this.channels[handle] = new BehaviorSubject<IMessage>(null);\r\n\r\n        else\r\n            throw (new Error('generated channel handle already exists'));\r\n\r\n        return handle;\r\n    }\r\n\r\n    public sendMessage(handle: ChannelHandle, data: any, messageType?: string) {\r\n        this.getChannel(handle).next(new Message(data, messageType));\r\n    }\r\n\r\n    public subscribeToChannel(handle: ChannelHandle, next?: (value: IMessage) => void, error?: (error: any) => void, complete?: () => void): Subscription {\r\n        return this.getChannel(handle).subscribe(next,error,complete);\r\n    }\r\n\r\n    private channels = {};\r\n\r\n    private getChannel(handle: ChannelHandle): BehaviorSubject<IMessage> {\r\n        if (!this.channels[handle]) throw (new Error('channel not exists ' + handle));\r\n        return this.channels[handle];\r\n    }\r\n\r\n    public deleteChannel(handle: ChannelHandle) {\r\n        const subject = this.getChannel(handle) as BehaviorSubject<IMessage>;\r\n        subject.complete();\r\n\r\n        this.channels[handle] = undefined;\r\n        this.logger.log('channel deleted ' + handle);\r\n    }\r\n\r\n    public deleteChannels(handles: ChannelHandle[]) {\r\n        for (const handle of handles)\r\n            this.deleteChannel(handle);\r\n\r\n    }\r\n}\r\n\r\nexport type ChannelHandle = string;\r\n\r\nexport interface IMessage {\r\n    data: any;\r\n    messageType?: string;\r\n}\r\n\r\nexport class Message<MESSAGEDATA> implements IMessage {\r\n    constructor(\r\n        public data: MESSAGEDATA,\r\n        public messageType?: string     //optional type to help distinguish between different messagedata\r\n    ) {\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SharedConfigService } from '@sowatech/shared/shared-config';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class I18nService {\r\n    constructor(private config: SharedConfigService) { }\r\n\r\n    public messages: { [key: string]: string; } = {};\r\n    private regex = {\r\n        key: new RegExp('@@(.*?):'),\r\n        fallback: new RegExp('@@.*?:(.*)$'),\r\n        message: new RegExp('@@.*:.*')\r\n    };\r\n\r\n    /**\r\n     * z.B. i18nService.translate(\"@@Person.UpdateAddress.error.msg.Text:Fehler beim Bearbeiten der Adressdaten\");\r\n     */\r\n    public translate(message: string, values: string[] = []): string {\r\n        const key: string = this.regex.key.exec(message)[1];\r\n        const fallback: string = this.regex.fallback.exec(message)[1];\r\n        let translated: string = this.localize(key, fallback);\r\n        if (values.length > 0) translated = this.replace(translated, values);\r\n        return translated;\r\n    }\r\n\r\n    /**\r\n     * z.B. i18nService.replace($localize`:@@Person.streetNameIs.msg.Text:Der Straßenname ist $0`, [this.model.streetName]);\r\n     */\r\n    public replace(msg: string, values: string[]): string {\r\n        values.forEach((value, index) => {\r\n            if (this.regex.message.test(value)) {\r\n                const subtranslation = this.translate(value, []);\r\n                msg = msg.replace(new RegExp(`\\\\$${index}`, 'g'), subtranslation);\r\n            }\r\n            else\r\n                msg = msg.replace(new RegExp(`\\\\$${index}`, 'g'), value);\r\n        });\r\n        return msg;\r\n    }\r\n\r\n    private localize(key: string, fallback = ''): string {\r\n        if ($localize.locale === undefined || (fallback && $localize.locale === this.config.sourceLanguage)) return fallback;\r\n        return this.messages[key];\r\n    }\r\n\r\n    // i18nService.concat(messages);\r\n    public concat(dict: { [key: string]: string; }): void {\r\n        // eslint-disable-next-line guard-for-in\r\n        for (const key in dict)\r\n            this.messages[key] = this.messages[key] ?? dict[key];\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PrintService {\r\n\r\n    private window: Window;\r\n    private emptyTitle = $localize`:@@PrintService.EmptyTitle.dsp.Title:Dokument`;\r\n\r\n    public printNodeById(id: string, title = this.emptyTitle) {\r\n        const node = document.getElementById(id);\r\n        this.print(node, title);\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    public printNode(node: Node, cloneNode = true, title = this.emptyTitle) { // cloneNode nur noch für Kompatibilität vorhanden, wir kopieren immer damit wir ohne Nebeneffekte sanitizen können\r\n        this.print(node.cloneNode(true), title);\r\n    }\r\n\r\n    /**\r\n     * Hack für SHANG-406.\r\n     * Kann bei Update von `ngx-scrollbar` kaputtgehen.\r\n     */\r\n    private sanitizeNgScrollbarForPrint(rootElement: HTMLElement) {\r\n        const elementKeepChildrenSelectors = [\r\n            'ng-scrollbar',\r\n            '.ng-scrollbar-wrapper',\r\n            '.ng-scroll-viewport-wrapper',\r\n            '.ng-scroll-viewport',\r\n            '.ng-scroll-content',\r\n        ];\r\n        const elementRemoveChildrenSelectors = [\r\n            'scrollbar-x',\r\n            'scrollbar-y',\r\n        ];\r\n        for (const selector of elementKeepChildrenSelectors) {\r\n            let element = rootElement.querySelector(selector);\r\n            while (element) {\r\n                this.removeElementKeepChildren(element);\r\n                element = rootElement.querySelector(selector);\r\n            }\r\n        }\r\n        for (const selector of elementRemoveChildrenSelectors) {\r\n            let element = rootElement.querySelector(selector);\r\n            while (element) {\r\n                this.removeElementWithChildren(element);\r\n                element = rootElement.querySelector(selector);\r\n            }\r\n        }\r\n    }\r\n\r\n    private removeElementWithChildren(element: Element) {\r\n        const parent = element.parentNode;\r\n        parent.removeChild(element);\r\n    }\r\n\r\n    private removeElementKeepChildren(element: Element) {\r\n        const parent = element.parentNode;\r\n        while (element.firstChild)\r\n            parent.insertBefore(element.firstChild, element);\r\n        parent.removeChild(element);\r\n    }\r\n\r\n    private print(node: Node, title: string) {\r\n        this.window = window.open('', 'PRINT', 'height=800,width=1000');\r\n        const styles = this.getStylesFromParentWindow(this.window.document);\r\n        this.addStylesThenPrint(styles);\r\n        this.window.document.head.appendChild(this.getTitleEl(title));\r\n        this.window.document.body.appendChild(node);\r\n        this.sanitizeNgScrollbarForPrint(this.window.document.body);\r\n        this.window.focus();\r\n    }\r\n\r\n    private getTitleEl(title: string) {\r\n        const titleEl = document.createElement('title');\r\n        titleEl.innerText = title;\r\n        return titleEl;\r\n    }\r\n\r\n    private getStylesFromParentWindow(doc: Document) {\r\n        const styles = [];\r\n        document.querySelectorAll('link').forEach(htmlElement => {\r\n            if (htmlElement.rel === 'stylesheet') {\r\n                const styleSheetElement = doc.createElement('link');\r\n                const absoluteUrl = new URL(htmlElement.href).href;\r\n                styleSheetElement.rel = 'stylesheet';\r\n                styleSheetElement.type = 'text/css';\r\n                styleSheetElement.href = absoluteUrl;\r\n                styles.push(styleSheetElement);\r\n            }\r\n        });\r\n        document.querySelectorAll('style').forEach(htmlElement => {\r\n            styles.push(htmlElement.cloneNode(true));\r\n        });\r\n        return styles;\r\n    }\r\n\r\n    private addStylesThenPrint(styles: HTMLLinkElement[]) {\r\n        this.stylesToBeLoaded = styles.length;\r\n        styles.forEach((css) => {\r\n            css.onload = () => this.onStyleLoaded();\r\n            this.window.document.head.appendChild(css);\r\n        });\r\n    }\r\n\r\n    private stylesToBeLoaded = 0;\r\n    private onStyleLoaded() {\r\n        this.stylesToBeLoaded--;\r\n        if (this.stylesToBeLoaded === 0) {\r\n            setTimeout(() => {\r\n                this.window.print();\r\n                this.window.close();\r\n            }, 100);\r\n        }\r\n\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n    name: 'safeHTML',\r\n    standalone: false\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n    constructor(private sanitizer: DomSanitizer) { }\r\n\r\n    public transform(html: string) {\r\n        return this.sanitizer.bypassSecurityTrustHtml(html);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class StateMachineService {\r\n\r\n    createStateMachine<TSTATE, TINPUT>(\r\n        initialState: TSTATE,\r\n        transitions: ITransition<TSTATE, TINPUT>[],\r\n        finalStates?: TSTATE[]\r\n    ): StateMachine<TSTATE, TINPUT> {\r\n        const sm = new StateMachine<TSTATE, TINPUT>(initialState, transitions, finalStates);\r\n        return sm;\r\n    }\r\n}\r\n\r\nexport class StateMachine<TSTATE, TINPUT> {\r\n\r\n    constructor(\r\n        private initialState: TSTATE,\r\n        private transitions: ITransition<TSTATE, TINPUT>[],\r\n        private finalStates?: TSTATE[]) {\r\n        this._state = initialState;\r\n    }\r\n\r\n    private _state: TSTATE;\r\n\r\n    public set currentState(value: TSTATE) {\r\n        if (value != this._state) {\r\n            this._state = value;\r\n            this.onStateChanged.next(this._state);\r\n        }\r\n\r\n        if (this.finalStates && this.finalStates.indexOf(value) > 0)\r\n            this.onFinalState.next(this._state);\r\n\r\n    }\r\n\r\n    public get currentState(): TSTATE {\r\n        return this._state;\r\n    }\r\n\r\n    public onStateChanged = new Subject<TSTATE>();\r\n    public onFinalState = new Subject<TSTATE>();\r\n\r\n    public resetState() {\r\n        this._state = this.initialState;\r\n    }\r\n\r\n    public sendInput(input: TINPUT) {\r\n        const relevantTransitions = this.transitions.filter((trans) => trans.fromState == this.currentState && trans.input == input);\r\n        if (relevantTransitions.length == 0) {\r\n            //no state change\r\n        }\r\n        if (relevantTransitions.length == 1)\r\n            this.currentState = relevantTransitions[0].toState;\r\n\r\n        if (relevantTransitions.length > 1) {\r\n            //error\r\n            console.error('more than 1 transition');\r\n        }\r\n    }\r\n\r\n}\r\n\r\nexport interface ITransition<TSTATE, TINPUT> {\r\n    fromState: TSTATE;\r\n    toState: TSTATE;\r\n    input: TINPUT;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { SafeHtmlPipe } from './safe-html/safe-html.pipe';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    declarations: [\r\n        SafeHtmlPipe\r\n    ],\r\n    exports: [\r\n        SafeHtmlPipe\r\n    ],\r\n    providers: []\r\n})\r\nexport class UtilitiesModule { }\r\n","export const ensureArray = <T>(arg:  T | T[]): T[]  => Array.isArray(arg) ? arg : [arg];\r\n\r\n","import { AfterViewInit, Directive, ElementRef, inject, input } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[appNgSelectAriaLabel]',\r\n  standalone: true\r\n})\r\nexport class NgSelectAriaLabelDirective implements AfterViewInit {\r\n    private readonly elementRef = inject(ElementRef);\r\n\r\n    public ariaLabel = input<string>();\r\n    public id = input<string>();\r\n\r\n    ngAfterViewInit(): void {\r\n        const inputField: HTMLInputElement = this.elementRef.nativeElement.querySelectorAll('input')[0];\r\n        if (!inputField) return;\r\n\r\n        if(this.ariaLabel())\r\n            inputField.setAttribute('aria-label', this.ariaLabel() ?? '');\r\n        if(this.id())\r\n            inputField.setAttribute('id', this.id() ?? '');\r\n    }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;MAKa,4BAA4B,CAAA;IAC9B,mBAAmB,CAAC,IAAY,EAAE,GAAW,EAAA;AAChD,QAAA,IAAI,WAAW,GAA+B,0BAA0B,CAAC,KAAK;AAC9E,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAAE,YAAA,WAAW,IAAI,0BAA0B,CAAC,WAAW;AACnF,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAAE,YAAA,WAAW,IAAI,0BAA0B,CAAC,UAAU;AAChF,QAAA,OAAO,WAAW;IACtB;AAEO,IAAA,WAAW,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI;YACA,IAAI,GAAG,IAAI,IAAI;AACX,gBAAA,OAAO,IAAI;YACf,IAAI,KAAK,GAAG,IAAI;;;AAGhB,YAAA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,KAAK,GAAG,KAAK;AACjB,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;gBAC9B,KAAK,GAAG,KAAK;AACjB,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG;gBAC7C,KAAK,GAAG,KAAK;AACjB,YAAA,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC;gBACjH,KAAK,GAAG,KAAK;AACjB,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,MAAM;AACF,YAAA,OAAO,KAAK;QAChB;IACJ;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI;YACA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAChC,gBAAA,OAAO,IAAI;AACf,YAAA,MAAM,YAAY,GAAG;AACjB,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtE,gBAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE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"}