{"version":3,"file":"mosaic-design-infosec-components-components-sidepanel.mjs","sources":["../../../libs/components/sidepanel/src/lib/types/sidepanel-size.ts","../../../libs/components/sidepanel/src/lib/constants/animation.ts","../../../libs/components/sidepanel/src/lib/services/sidepanel-animator.service.ts","../../../libs/components/sidepanel/src/lib/services/sidepanel.service.ts","../../../libs/components/sidepanel/src/lib/directives/open-sidepanel.directive.ts","../../../libs/components/sidepanel/src/lib/directives/resizable-sidepanel.directive.ts","../../../libs/components/sidepanel/src/lib/directives/sidepanel-sidemenu.directive.ts","../../../libs/components/sidepanel/src/lib/directives/sidepanel-title.directive.ts","../../../libs/components/sidepanel/src/lib/components/sidepanel-body/sidepanel-body.component.ts","../../../libs/components/sidepanel/src/lib/components/sidepanel-body/sidepanel-body.component.html","../../../libs/components/sidepanel/src/lib/components/sidepanel-header/sidepanel-header.component.ts","../../../libs/components/sidepanel/src/lib/components/sidepanel-header/sidepanel-header.component.html","../../../libs/components/sidepanel/src/lib/components/sidepanel/sidepanel.component.ts","../../../libs/components/sidepanel/src/lib/components/sidepanel/sidepanel.component.html","../../../libs/components/sidepanel/src/lib/components/sidepanel-footer/sidepanel-footer.component.ts","../../../libs/components/sidepanel/src/lib/components/sidepanel-footer/sidepanel-footer.component.html","../../../libs/components/sidepanel/src/lib/sidepanel.module.ts","../../../libs/components/sidepanel/mosaic-design-infosec-components-components-sidepanel.ts"],"sourcesContent":["export enum SidepanelSize {\n    Small = 'small',\n    Medium = 'medium',\n    Large = 'large'\n}\n","export const COLLAPSE_SIDEPANEL_VALUE = '85%';\nexport const EXPAND_SIDEPANEL_VALUE = '0%';\n","import { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\nimport { ElementRef, inject, Injectable } from '@angular/core';\nimport { KbqSidepanelRef } from '@koobiq/components/sidepanel';\nimport { Subject } from 'rxjs';\n\nimport { COLLAPSE_SIDEPANEL_VALUE } from '../constants';\nimport { IcSidepanelRef, SidepanelAnimator } from '../types';\n\n@Injectable()\nexport class IcSidepanelAnimatorService implements SidepanelAnimator {\n    readonly #animationBuilder = inject(AnimationBuilder);\n    readonly sidepanelAnimationChanged$: Subject<IcSidepanelRef> = new Subject<IcSidepanelRef>();\n\n    /**\n     * Применяет анимацию\n     * @param sidepanelRef sidepanel, которая анимируется\n     * @param transformValue значение, с которым применяется анимация\n     */\n    animatePanel(sidepanelRef: IcSidepanelRef, transformValue: string): void {\n        const elementRef = this.getElementRef(sidepanelRef);\n\n        if (elementRef) {\n            const containerElement = elementRef.nativeElement as HTMLElement;\n\n            const animation = this.#animationBuilder.build([\n                animate(\n                    '200ms ease',\n                    style({\n                        transform: `translateX(${transformValue})`\n                    })\n                )\n            ]);\n\n            const player: AnimationPlayer = animation.create(containerElement);\n            player.play();\n            sidepanelRef.isCollapsed = transformValue === COLLAPSE_SIDEPANEL_VALUE;\n            this.sidepanelAnimationChanged$.next(sidepanelRef);\n        }\n    }\n\n    private getElementRef(sidepanelRef: KbqSidepanelRef): ElementRef | null {\n        const containerInstance = sidepanelRef.containerInstance;\n\n        if ('elementRef' in containerInstance) {\n            return (containerInstance as unknown as IcSidepanelRef).elementRef;\n        }\n\n        return null;\n    }\n}\n","import { ComponentType, Overlay } from '@angular/cdk/overlay';\nimport {\n    ElementRef,\n    Inject,\n    inject,\n    Injectable,\n    InjectionToken,\n    Injector,\n    Optional,\n    SkipSelf,\n    TemplateRef\n} from '@angular/core';\nimport {\n    KBQ_SIDEPANEL_DEFAULT_OPTIONS,\n    KbqSidepanelConfig,\n    KbqSidepanelPosition,\n    KbqSidepanelRef,\n    KbqSidepanelService\n} from '@koobiq/components/sidepanel';\nimport { Observable } from 'rxjs';\n\nimport { COLLAPSE_SIDEPANEL_VALUE, EXPAND_SIDEPANEL_VALUE } from '../constants';\nimport { IcSidepanelConfig, IcSidepanelRef } from '../types';\n\nimport { IcSidepanelAnimatorService } from './sidepanel-animator.service';\n\nexport const IC_SIDEPANEL_DEFAULT_CONFIG = new InjectionToken<IcSidepanelConfig>('Ic-Sidepanel-Default-Config');\n\nconst DEFAULT_IC_SIDEPANEL_CONFIG: IcSidepanelConfig = {\n    hasBackdrop: false,\n    position: KbqSidepanelPosition.Right,\n    topOffset: 72,\n    overlayPanelClass: 'ic-sidepanel-overlay'\n};\n\n@Injectable()\nexport class IcSidepanelService extends KbqSidepanelService {\n    readonly #icSidepanelAnimator: IcSidepanelAnimatorService = inject(IcSidepanelAnimatorService);\n    readonly #icSidepanelDefaultConfig =\n        inject(IC_SIDEPANEL_DEFAULT_CONFIG, { optional: true }) || DEFAULT_IC_SIDEPANEL_CONFIG;\n\n    constructor(\n        overlay: Overlay,\n        injector: Injector,\n        @Optional() @Inject(KBQ_SIDEPANEL_DEFAULT_OPTIONS) defaultOptions: KbqSidepanelConfig,\n        @Optional() @SkipSelf() parentSidepanelService: KbqSidepanelService\n    ) {\n        super(overlay, injector, defaultOptions, parentSidepanelService);\n    }\n\n    /**\n     * Создает компонент sidepanel\n     * @param templateRef TemplateRef, компонента.\n     * @param config Sidepanel конфигурация открытия.\n     * @returns KbqSidepanelRef - созданная Sidepanel.\n     */\n    override open<T, D = unknown>(\n        templateRef: TemplateRef<T> | ComponentType<T>,\n        config: IcSidepanelConfig<D> = this.#icSidepanelDefaultConfig\n    ): IcSidepanelRef<T> {\n        const mergedConfig = {\n            ...this.#icSidepanelDefaultConfig,\n            ...config\n        };\n\n        // kbq-realisation\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        mergedConfig.data = {\n            resizableElement: config.resizableElement,\n            ...mergedConfig.data\n        };\n\n        const kbqSidepanelRef = super.open(templateRef, mergedConfig);\n\n        this.changeSidepanelHeight(kbqSidepanelRef, mergedConfig.topOffset || 0);\n\n        return kbqSidepanelRef as IcSidepanelRef;\n    }\n\n    override get openedSidepanels(): IcSidepanelRef[] {\n        return super.openedSidepanels as IcSidepanelRef[];\n    }\n\n    getSidepanelAnimationChanged$(): Observable<IcSidepanelRef> {\n        return this.#icSidepanelAnimator.sidepanelAnimationChanged$.asObservable();\n    }\n\n    /**\n     * Частично скрывает Sidepanel по id\n     * @param id ID для поиска Sidepanel.\n     */\n    collapsePanelById(id: string): void {\n        this.animatePanel(id, COLLAPSE_SIDEPANEL_VALUE);\n    }\n\n    /**\n     * Раскрывает Sidepanel по id\n     * @param id ID для поиска Sidepanel.\n     */\n    expandPanelById(id: string): void {\n        this.animatePanel(id, EXPAND_SIDEPANEL_VALUE);\n    }\n\n    /**\n     * Частично скрывает все открытые Sidepanels\n     */\n    collapsePanels(): void {\n        this.animatePanels(COLLAPSE_SIDEPANEL_VALUE);\n    }\n\n    /**\n     * Раскрывает все открытые Sidepanels\n     */\n    expandPanels(): void {\n        this.animatePanels(EXPAND_SIDEPANEL_VALUE);\n    }\n\n    /**\n     * Finds the closest KbqSidepanelRef to an element by looking at the DOM.\n     * @param element Element relative to which to look for a sidepanel.\n     * @param openSidepanels References to the currently-open sidepanels.\n     */\n    getClosestSidepanel(\n        element: ElementRef<HTMLElement>,\n        openSidepanels: IcSidepanelRef[] = this.openedSidepanels\n    ): IcSidepanelRef | null | undefined {\n        let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n        while (parent && !parent.classList.contains('kbq-sidepanel-container')) {\n            parent = parent.parentElement;\n        }\n\n        return parent ? openSidepanels.find((sidepanel) => sidepanel.id === parent.id) : null;\n    }\n\n    private changeSidepanelHeight(sidepanelRef: KbqSidepanelRef, topOffsetValue: number): void {\n        const icSidepanelRef = sidepanelRef.containerInstance as unknown as IcSidepanelRef;\n\n        if ('elementRef' in icSidepanelRef) {\n            (icSidepanelRef.elementRef.nativeElement as HTMLElement).style.height =\n                `calc(100vh - var(--kbq-size-s) - ${topOffsetValue}px)`;\n        }\n    }\n\n    /**\n     * Применяет анимацию для Sidepanel\n     * @param id ID для поиска Sidepanel.\n     * @param transformValue значение, с которым применяется анимация\n     */\n    private animatePanel(id: string, transformValue: string): void {\n        const sidePanel = this.getSidepanelById(id);\n        const icSidepanelRef = sidePanel as unknown as IcSidepanelRef;\n        if (!sidePanel) {\n            return;\n        }\n\n        this.#icSidepanelAnimator.animatePanel(icSidepanelRef, transformValue);\n    }\n\n    /**\n     * Применяет анимацию для всех Sidepanels\n     * @param transformValue значение, с которым применяется анимация\n     */\n    private animatePanels(transformValue: string): void {\n        this.openedSidepanels.forEach((sidepanelRef: KbqSidepanelRef) => {\n            const extendedSidePanel = sidepanelRef as unknown as IcSidepanelRef;\n            this.#icSidepanelAnimator.animatePanel(extendedSidePanel, transformValue);\n        });\n    }\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { Directive, HostListener, inject, Input, TemplateRef } from '@angular/core';\nimport { take } from 'rxjs';\n\nimport { IcSidepanelService } from '../services';\nimport { IcSidepanelConfig } from '../types';\n\n@Directive({\n    selector: '[icOpenSidepanel]'\n})\n/**\n * @class OpenSidepanelDirective - Директива открытия sidepanel\n */\nexport class OpenSidepanelDirective {\n    readonly #icSidepanelService = inject(IcSidepanelService);\n    #isOpenedSidepanel = false;\n\n    @Input()\n    sidepanelTpl!: TemplateRef<unknown> | ComponentType<unknown>;\n\n    @Input()\n    config?: IcSidepanelConfig;\n\n    @HostListener('click') openSidepanel(): void {\n        if (this.#isOpenedSidepanel) {\n            return;\n        }\n        const sidepanel = this.#icSidepanelService.open(this.sidepanelTpl, this.config);\n        this.#isOpenedSidepanel = true;\n\n        sidepanel\n            .afterClosed()\n            .pipe(take(1))\n            .subscribe(() => {\n                this.#isOpenedSidepanel = false;\n            });\n    }\n}\n","import {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgZone,\n    Output,\n    AfterViewInit,\n    DestroyRef,\n    inject,\n    OnDestroy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, fromEvent } from 'rxjs';\nimport { takeUntil, map, filter, switchMap } from 'rxjs/operators';\n\nimport { IcSidepanelService } from '../services';\n\n@Directive({\n    selector: '[icResizableSidepanel]',\n    standalone: true\n})\nexport class ResizableSidepanelDirective implements AfterViewInit, OnDestroy {\n    @Input() minWidth = 460;\n    @Input() maxWidth = 960;\n\n    @Output() widthChange = new EventEmitter<number>();\n\n    readonly #el: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n    readonly #icSidepanelService = inject(IcSidepanelService);\n    readonly #ngZone: NgZone = inject(NgZone);\n    readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n    // When this directive is included in a sidepanel via TemplateRef (rather than being\n    // in a Component), the SidepanelRef isn't available via injection because embedded\n    // views cannot be given a custom injector. Instead, we look up the SidepanelRef by\n    // ID.\n    // This must occur in `onInit`, as the ID binding for the sidepanel container won't\n    // be resolved at constructor time. We use setTimeout by same reason.\n    private get isCollapsedSidepanel(): boolean {\n        return !!this.#icSidepanelService.getClosestSidepanel(this.#el)?.isCollapsed;\n    }\n\n    ngAfterViewInit(): void {\n        this.widthChange.emit(this.#el.nativeElement.offsetWidth);\n        this.#ngZone.runOutsideAngular(() => {\n            fromEvent<MouseEvent>(this.#el.nativeElement, 'mousedown')\n                .pipe(\n                    filter(\n                        (event) =>\n                            (event.target as HTMLElement).classList.contains('ic-sidepanel__resizer') &&\n                            !this.isCollapsedSidepanel\n                    ),\n                    switchMap((event: MouseEvent) => {\n                        event.preventDefault();\n\n                        const startX: number = event.clientX;\n                        const startWidth: number = this.#el.nativeElement.offsetWidth;\n\n                        const mousemove$ = fromEvent<MouseEvent>(document, 'mousemove');\n                        const mouseup$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n                        return mousemove$.pipe(\n                            map((moveEvent) => {\n                                const dx = moveEvent.clientX - startX;\n                                let newWidth = startWidth - dx;\n                                newWidth = Math.max(this.minWidth, Math.min(this.maxWidth, newWidth));\n\n                                return newWidth;\n                            }),\n                            distinctUntilChanged(),\n                            takeUntil(mouseup$)\n                        );\n                    }),\n                    takeUntilDestroyed(this.#destroyRef)\n                )\n                .subscribe((newWidth) => {\n                    this.#ngZone.run(() => {\n                        this.widthChange.emit(newWidth);\n                    });\n                });\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.widthChange.emit(0);\n    }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[icSidepanelSidemenu], ic-sidepanel-sidemenu, [ic-sidepanel-sidemenu]',\n    host: {\n        class: 'ic-sidepanel__sidemenu ic-border-right'\n    }\n})\n/**\n * @class SidepanelSidemenuDirective - Боковое меню Sidepanel\n */\nexport class SidepanelSidemenuDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[icSidepanelTitle], ic-sidepanel-title, [ic-sidepanel-title]',\n    host: {\n        class: 'kbq-title'\n    }\n})\nexport class SidepanelTitleDirective {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n    selector: 'ic-sidepanel-body',\n    templateUrl: './sidepanel-body.component.html',\n    styleUrl: './sidepanel-body.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidepanelBodyComponent {\n    @Output()\n    scrollBody: EventEmitter<number> = new EventEmitter<number>();\n\n    onScrollBody(event: [instance: import('overlayscrollbars').OverlayScrollbars, event: Event]): void {\n        this.scrollBody.emit(event[0].elements().scrollOffsetElement.scrollTop);\n    }\n}\n","<kbq-scrollbar (onScroll)=\"onScrollBody($event)\">\n    <div class=\"ic-sidepanel__body\">\n        <ng-content></ng-content>\n    </div>\n</kbq-scrollbar>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\n@Component({\n    selector: 'ic-sidepanel-header',\n    templateUrl: './sidepanel-header.component.html',\n    styleUrl: './sidepanel-header.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidepanelHeaderComponent {\n    protected readonly KbqButtonStyles = KbqButtonStyles;\n    protected readonly KbqComponentColors = KbqComponentColors;\n\n    @HostBinding('class.ic-sidepanel__header_shadow')\n    isShadowRequired = false;\n\n    @Input()\n    hasCloseButton = false;\n}\n","<div class=\"ic-sidepanel__header\">\n    <ng-content></ng-content>\n    @if (hasCloseButton) {\n        <button\n            kbq-button\n            kbqSidepanelClose\n            type=\"button\"\n            [kbqStyle]=\"KbqButtonStyles.Transparent\"\n            [color]=\"KbqComponentColors.Contrast\"\n        >\n            <i kbq-icon=\"kbq-xmark_16\"></i>\n        </button>\n    }\n</div>\n","import {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    DestroyRef,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    inject,\n    Input,\n    OnDestroy,\n    Signal\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { KBQ_SIDEPANEL_DATA } from '@koobiq/components/sidepanel';\nimport { filter, map } from 'rxjs/operators';\n\nimport { ResizableSidepanelDirective } from '../../directives';\nimport { IcSidepanelService } from '../../services';\nimport { SidepanelSize } from '../../types';\nimport { SidepanelBodyComponent } from '../sidepanel-body/sidepanel-body.component';\nimport { SidepanelHeaderComponent } from '../sidepanel-header/sidepanel-header.component';\n\n@Component({\n    selector: 'ic-sidepanel',\n    templateUrl: './sidepanel.component.html',\n    styleUrls: ['./sidepanel.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'ic-sidepanel'\n    },\n    hostDirectives: [\n        {\n            directive: ResizableSidepanelDirective,\n            outputs: ['widthChange']\n        }\n    ]\n})\nexport class SidepanelComponent implements AfterContentInit, OnDestroy {\n    readonly #destroyRef = inject(DestroyRef);\n    readonly #icSidepanelService = inject(IcSidepanelService);\n    readonly #el: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    // kbq-realisation\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n    @Input()\n    data: { resizableElement?: HTMLElement } = inject(KBQ_SIDEPANEL_DATA, { optional: true });\n\n    #size: SidepanelSize = SidepanelSize.Medium;\n\n    readonly isSidepanelCollapsed: Signal<boolean | undefined> = toSignal(\n        this.#icSidepanelService.getSidepanelAnimationChanged$().pipe(\n            filter((sidepanelRef) => sidepanelRef === this.#icSidepanelService.getClosestSidepanel(this.#el)),\n            map((sidepanelRef) => Boolean(sidepanelRef.isCollapsed))\n        )\n    );\n\n    @Input()\n    set size(value: SidepanelSize) {\n        this.#size = value;\n    }\n\n    @HostBinding('class')\n    get hostClass(): string {\n        return `ic-sidepanel_${this.#size}`;\n    }\n\n    @HostBinding('style.width.px')\n    protected width: number | null = null;\n\n    @HostListener('widthChange', ['$event'])\n    onWidthChange(newWidth: number): void {\n        this.width = newWidth;\n        if (this.data.resizableElement) {\n            this.data.resizableElement.style.setProperty('--sidepanel-width', `${newWidth}px`);\n        }\n    }\n\n    @ContentChild(SidepanelBodyComponent)\n    public sidepanelBody?: SidepanelBodyComponent;\n\n    @ContentChild(SidepanelHeaderComponent)\n    public sidepanelHeader?: SidepanelHeaderComponent;\n\n    ngAfterContentInit(): void {\n        if (this.data.resizableElement) {\n            this.data.resizableElement.style.width = `calc(${this.data.resizableElement.offsetWidth}px - var(--sidepanel-width))`;\n        }\n\n        this.sidepanelBody?.scrollBody.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((scrollTop) => {\n            if (this.sidepanelHeader) {\n                this.sidepanelHeader.isShadowRequired = !!scrollTop;\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        if (this.data.resizableElement) {\n            this.data.resizableElement.style.width = '';\n        }\n    }\n}\n","<ng-content select=\"[icSidepanelSidemenu], ic-sidepanel-sidemenu, [ic-sidepanel-sidemenu]\"></ng-content>\n<div class=\"ic-sidepanel__content\">\n    <ng-content select=\"ic-sidepanel-header\"></ng-content>\n    <ng-content select=\"ic-sidepanel-body\"></ng-content>\n    <ng-content select=\"ic-sidepanel-footer\"></ng-content>\n</div>\n@if (!isSidepanelCollapsed()) {\n    <div class=\"ic-sidepanel__resizer\"></div>\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'ic-sidepanel-footer',\n    templateUrl: './sidepanel-footer.component.html',\n    styleUrl: './sidepanel-footer.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidepanelFooterComponent {}\n","<div class=\"ic-sidepanel__footer\">\n    <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { KbqSidepanelModule } from '@koobiq/components/sidepanel';\n\nimport {\n    SidepanelBodyComponent,\n    SidepanelComponent,\n    SidepanelFooterComponent,\n    SidepanelHeaderComponent\n} from './components';\nimport { OpenSidepanelDirective, SidepanelSidemenuDirective, SidepanelTitleDirective } from './directives';\nimport { IcSidepanelAnimatorService, IcSidepanelService } from './services';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n        KbqButtonModule,\n        KbqLinkModule,\n        KbqBadgeModule,\n        KbqIconModule,\n        KbqSidepanelModule,\n        KbqScrollbarModule\n    ],\n    providers: [IcSidepanelService, IcSidepanelAnimatorService],\n    declarations: [\n        SidepanelComponent,\n        SidepanelHeaderComponent,\n        SidepanelBodyComponent,\n        SidepanelFooterComponent,\n        OpenSidepanelDirective,\n        SidepanelSidemenuDirective,\n        SidepanelTitleDirective\n    ],\n    exports: [\n        SidepanelComponent,\n        SidepanelHeaderComponent,\n        SidepanelBodyComponent,\n        SidepanelFooterComponent,\n        OpenSidepanelDirective,\n        SidepanelSidemenuDirective,\n        SidepanelTitleDirective\n    ]\n})\nexport class IcSidepanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}