@vkontakte/vkui 8.2.0 → 8.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Banner/Banner.d.ts.map +1 -1
- package/dist/components/Banner/Banner.js +7 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.module.css +5 -3
- package/dist/cssm/components/Banner/Banner.js +7 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +1 -1
- package/src/components/ActionSheet/ActionSheet.module.css +5 -3
- package/src/components/ActionSheet/ActionSheet.module.css.d.ts.map +1 -1
- package/src/components/Banner/Banner.tsx +8 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../src/components/Banner/Banner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAOxE,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5E;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5D;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACnE;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,uLAgBpB,WAAW,KAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../src/components/Banner/Banner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAOxE,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5E;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5D;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACnE;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,uLAgBpB,WAAW,KAAG,KAAK,CAAC,SAuFtB,CAAC"}
|
|
@@ -71,9 +71,15 @@ import { Title } from "../Typography/Title/Title.js";
|
|
|
71
71
|
children: platform === 'ios' ? /*#__PURE__*/ _jsx(IconDismissIOS, {}) : /*#__PURE__*/ _jsx(Icon24Cancel, {})
|
|
72
72
|
})
|
|
73
73
|
};
|
|
74
|
+
const getAfterContent = ()=>{
|
|
75
|
+
if (typeof afterProp === 'string') {
|
|
76
|
+
return afterMap[afterProp] || afterProp;
|
|
77
|
+
}
|
|
78
|
+
return afterProp;
|
|
79
|
+
};
|
|
74
80
|
const after = afterProp && /*#__PURE__*/ _jsx("div", {
|
|
75
81
|
className: "vkuiBanner__after",
|
|
76
|
-
children:
|
|
82
|
+
children: getAfterContent()
|
|
77
83
|
});
|
|
78
84
|
const isClickable = restProps.onClick || restProps.onClickCapture || restProps.href;
|
|
79
85
|
return /*#__PURE__*/ _jsxs(Tappable, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Banner/Banner.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Icon24Cancel, Icon24Chevron, Icon24Dismiss, Icon24DismissDark } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useColorScheme } from '../../hooks/useColorScheme';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Tappable, type TappableOmitProps } from '../Tappable/Tappable';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './Banner.module.css';\n\nexport interface BannerProps extends Omit<TappableOmitProps, 'title' | 'size'> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image' | undefined;\n /**\n * Размер баннера.\n */\n size?: 's' | 'm' | undefined;\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при нажатии на неё сработает свойство `onDismiss`.\n * - `chevron` – отображается иконка шеврона, которая подразумевает, что при нажатии на баннер можно куда-то перейти.\n */\n after?: 'dismiss' | 'chevron' | React.ReactNode | undefined;\n /**\n * Срабатывает при нажатии на иконку крестика при `after=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n /**\n * Текст кнопки закрытия. Делает ее доступной для ассистивных технологий.\n */\n dismissLabel?: string | undefined;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode | undefined;\n /**\n * Заголовок.\n */\n title?: React.ReactNode | undefined;\n /**\n * Подзаголовок.\n */\n subtitle?: React.ReactNode | undefined;\n /**\n * Дополнительный подзаголовок баннера.\n */\n extraSubtitle?: React.ReactNode | undefined;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n * - `auto` - цвет фона и текста будет зависеть от цветовой схемы приложения.\n */\n imageTheme?: 'light' | 'dark' | 'auto' | undefined;\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode | undefined;\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkui.io/components/button).\n *\n * - В режиме `tint` или `image` со светлым фоном используйте только с параметрами:\n * - `mode=\"primary\"`\n * - `mode=\"secondary\"`\n * - В режиме `image` с тёмным фоном используйте с параметрами:\n * - `appearance=\"overlay\"`.\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkui.io/components/button-group) с параметрами:\n *\n * - `gap=\"m\" mode=\"horizontal\" stretched`\n * - `gap=\"m\" mode=\"vertical\" stretched`.\n */\n actions?: React.ReactNode | undefined;\n}\n\n/**\n * @see https://vkui.io/components/banner\n */\nexport const Banner = ({\n mode = 'tint',\n imageTheme: imageThemeProp = 'auto',\n size = 's',\n before,\n after: afterProp,\n title,\n subtitle,\n extraSubtitle,\n children,\n background,\n actions,\n onDismiss,\n dismissLabel = 'Скрыть',\n Component,\n ...restProps\n}: BannerProps): React.ReactNode => {\n const platform = usePlatform();\n const colorScheme = useColorScheme();\n\n const imageTheme = imageThemeProp === 'auto' ? colorScheme : imageThemeProp;\n\n const HeaderTypography = size === 'm' ? Title : Headline;\n const SubheadTypography = size === 'm' ? Text : Subhead;\n\n const IconDismissIOS = mode === 'image' ? Icon24DismissDark : Icon24Dismiss;\n\n const content = (\n <>\n {mode === 'image' && background && (\n <div aria-hidden className={styles.bg}>\n {background}\n </div>\n )}\n\n {before && <div className={styles.before}>{before}</div>}\n\n <div className={styles.content}>\n {hasReactNode(title) && (\n <HeaderTypography Component=\"div\" weight=\"2\" level={size === 'm' ? '2' : '1'}>\n {title}\n </HeaderTypography>\n )}\n {hasReactNode(subtitle) && (\n <SubheadTypography Component=\"div\" className={styles.subtitle}>\n {subtitle}\n </SubheadTypography>\n )}\n {hasReactNode(extraSubtitle) && (\n <Text Component=\"div\" className={styles.extraSubtitle}>\n {extraSubtitle}\n </Text>\n )}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div className={styles.actions}>{actions}</div>\n )}\n </div>\n </>\n );\n\n const afterMap: Record<string, React.ReactNode> = {\n chevron: <Icon24Chevron className={styles.chevron} />,\n dismiss: (\n <IconButton\n label={dismissLabel}\n className={styles.dismiss}\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {platform === 'ios' ? <IconDismissIOS /> : <Icon24Cancel />}\n </IconButton>\n ),\n };\n\n const
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Banner/Banner.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Icon24Cancel, Icon24Chevron, Icon24Dismiss, Icon24DismissDark } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useColorScheme } from '../../hooks/useColorScheme';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Tappable, type TappableOmitProps } from '../Tappable/Tappable';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './Banner.module.css';\n\nexport interface BannerProps extends Omit<TappableOmitProps, 'title' | 'size'> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image' | undefined;\n /**\n * Размер баннера.\n */\n size?: 's' | 'm' | undefined;\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при нажатии на неё сработает свойство `onDismiss`.\n * - `chevron` – отображается иконка шеврона, которая подразумевает, что при нажатии на баннер можно куда-то перейти.\n */\n after?: 'dismiss' | 'chevron' | React.ReactNode | undefined;\n /**\n * Срабатывает при нажатии на иконку крестика при `after=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n /**\n * Текст кнопки закрытия. Делает ее доступной для ассистивных технологий.\n */\n dismissLabel?: string | undefined;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode | undefined;\n /**\n * Заголовок.\n */\n title?: React.ReactNode | undefined;\n /**\n * Подзаголовок.\n */\n subtitle?: React.ReactNode | undefined;\n /**\n * Дополнительный подзаголовок баннера.\n */\n extraSubtitle?: React.ReactNode | undefined;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n * - `auto` - цвет фона и текста будет зависеть от цветовой схемы приложения.\n */\n imageTheme?: 'light' | 'dark' | 'auto' | undefined;\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode | undefined;\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkui.io/components/button).\n *\n * - В режиме `tint` или `image` со светлым фоном используйте только с параметрами:\n * - `mode=\"primary\"`\n * - `mode=\"secondary\"`\n * - В режиме `image` с тёмным фоном используйте с параметрами:\n * - `appearance=\"overlay\"`.\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkui.io/components/button-group) с параметрами:\n *\n * - `gap=\"m\" mode=\"horizontal\" stretched`\n * - `gap=\"m\" mode=\"vertical\" stretched`.\n */\n actions?: React.ReactNode | undefined;\n}\n\n/**\n * @see https://vkui.io/components/banner\n */\nexport const Banner = ({\n mode = 'tint',\n imageTheme: imageThemeProp = 'auto',\n size = 's',\n before,\n after: afterProp,\n title,\n subtitle,\n extraSubtitle,\n children,\n background,\n actions,\n onDismiss,\n dismissLabel = 'Скрыть',\n Component,\n ...restProps\n}: BannerProps): React.ReactNode => {\n const platform = usePlatform();\n const colorScheme = useColorScheme();\n\n const imageTheme = imageThemeProp === 'auto' ? colorScheme : imageThemeProp;\n\n const HeaderTypography = size === 'm' ? Title : Headline;\n const SubheadTypography = size === 'm' ? Text : Subhead;\n\n const IconDismissIOS = mode === 'image' ? Icon24DismissDark : Icon24Dismiss;\n\n const content = (\n <>\n {mode === 'image' && background && (\n <div aria-hidden className={styles.bg}>\n {background}\n </div>\n )}\n\n {before && <div className={styles.before}>{before}</div>}\n\n <div className={styles.content}>\n {hasReactNode(title) && (\n <HeaderTypography Component=\"div\" weight=\"2\" level={size === 'm' ? '2' : '1'}>\n {title}\n </HeaderTypography>\n )}\n {hasReactNode(subtitle) && (\n <SubheadTypography Component=\"div\" className={styles.subtitle}>\n {subtitle}\n </SubheadTypography>\n )}\n {hasReactNode(extraSubtitle) && (\n <Text Component=\"div\" className={styles.extraSubtitle}>\n {extraSubtitle}\n </Text>\n )}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div className={styles.actions}>{actions}</div>\n )}\n </div>\n </>\n );\n\n const afterMap: Record<string, React.ReactNode> = {\n chevron: <Icon24Chevron className={styles.chevron} />,\n dismiss: (\n <IconButton\n label={dismissLabel}\n className={styles.dismiss}\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {platform === 'ios' ? <IconDismissIOS /> : <Icon24Cancel />}\n </IconButton>\n ),\n };\n\n const getAfterContent = () => {\n if (typeof afterProp === 'string') {\n return afterMap[afterProp] || afterProp;\n }\n return afterProp;\n };\n\n const after = afterProp && <div className={styles.after}>{getAfterContent()}</div>;\n\n const isClickable = restProps.onClick || restProps.onClickCapture || restProps.href;\n\n return (\n <Tappable\n Component={Component || (!isClickable ? 'section' : undefined)}\n activeMode={platform === 'ios' ? 'opacity' : 'background'}\n baseClassName={classNames(\n styles.host,\n platform === 'ios' && styles.ios,\n mode === 'image' && styles.modeImage,\n size === 'm' && styles.sizeM,\n mode === 'image' && imageTheme === 'dark' && styles.inverted,\n )}\n {...restProps}\n >\n {content}\n {after}\n </Tappable>\n );\n};\n"],"names":["React","Icon24Cancel","Icon24Chevron","Icon24Dismiss","Icon24DismissDark","classNames","hasReactNode","useColorScheme","usePlatform","IconButton","Tappable","Headline","Subhead","Text","Title","Banner","mode","imageTheme","imageThemeProp","size","before","after","afterProp","title","subtitle","extraSubtitle","children","background","actions","onDismiss","dismissLabel","Component","restProps","platform","colorScheme","HeaderTypography","SubheadTypography","IconDismissIOS","content","div","aria-hidden","className","weight","level","Children","count","afterMap","chevron","dismiss","label","onClick","hoverMode","hasActive","getAfterContent","isClickable","onClickCapture","href","undefined","activeMode","baseClassName"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,EAAEC,aAAa,EAAEC,aAAa,EAAEC,iBAAiB,QAAQ,mBAAmB;AACjG,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,cAAc,QAAQ,gCAA6B;AAC5D,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,QAAQ,QAAgC,0BAAuB;AACxE,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,OAAO,QAAQ,mCAAgC;AACxD,SAASC,IAAI,QAAQ,6BAA0B;AAC/C,SAASC,KAAK,QAAQ,+BAA4B;AA0ElD;;CAEC,GACD,OAAO,MAAMC,SAAS,CAAC,EACrBC,OAAO,MAAM,EACbC,YAAYC,iBAAiB,MAAM,EACnCC,OAAO,GAAG,EACVC,MAAM,EACNC,OAAOC,SAAS,EAChBC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,QAAQ,EACRC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,eAAe,QAAQ,EACvBC,SAAS,EACT,GAAGC,WACS;IACZ,MAAMC,WAAWzB;IACjB,MAAM0B,cAAc3B;IAEpB,MAAMU,aAAaC,mBAAmB,SAASgB,cAAchB;IAE7D,MAAMiB,mBAAmBhB,SAAS,MAAML,QAAQH;IAChD,MAAMyB,oBAAoBjB,SAAS,MAAMN,OAAOD;IAEhD,MAAMyB,iBAAiBrB,SAAS,UAAUZ,oBAAoBD;IAE9D,MAAMmC,wBACJ;;YACGtB,SAAS,WAAWW,4BACnB,KAACY;gBAAIC,aAAW;gBAACC,SAAS;0BACvBd;;YAIJP,wBAAU,KAACmB;gBAAIE,SAAS;0BAAkBrB;;0BAE3C,MAACmB;gBAAIE,SAAS;;oBACXnC,aAAaiB,wBACZ,KAACY;wBAAiBJ,WAAU;wBAAMW,QAAO;wBAAIC,OAAOxB,SAAS,MAAM,MAAM;kCACtEI;;oBAGJjB,aAAakB,2BACZ,KAACY;wBAAkBL,WAAU;wBAAMU,SAAS;kCACzCjB;;oBAGJlB,aAAamB,gCACZ,KAACZ;wBAAKkB,WAAU;wBAAMU,SAAS;kCAC5BhB;;oBAGJnB,aAAasB,YAAY5B,MAAM4C,QAAQ,CAACC,KAAK,CAACjB,WAAW,mBACxD,KAACW;wBAAIE,SAAS;kCAAmBb;;;;;;IAMzC,MAAMkB,WAA4C;QAChDC,uBAAS,KAAC7C;YAAcuC,SAAS;;QACjCO,uBACE,KAACvC;YACCwC,OAAOnB;YACPW,SAAS;YACTS,SAASrB;YACTsB,WAAU;YACVC,WAAW;sBAEVnB,aAAa,sBAAQ,KAACI,oCAAoB,KAACpC;;IAGlD;IAEA,MAAMoD,kBAAkB;QACtB,IAAI,OAAO/B,cAAc,UAAU;YACjC,OAAOwB,QAAQ,CAACxB,UAAU,IAAIA;QAChC;QACA,OAAOA;IACT;IAEA,MAAMD,QAAQC,2BAAa,KAACiB;QAAIE,SAAS;kBAAiBY;;IAE1D,MAAMC,cAActB,UAAUkB,OAAO,IAAIlB,UAAUuB,cAAc,IAAIvB,UAAUwB,IAAI;IAEnF,qBACE,MAAC9C;QACCqB,WAAWA,aAAc,CAAA,CAACuB,cAAc,YAAYG,SAAQ;QAC5DC,YAAYzB,aAAa,QAAQ,YAAY;QAC7C0B,eAAetD,+BAEb4B,aAAa,4BACbjB,SAAS,oCACTG,SAAS,4BACTH,SAAS,WAAWC,eAAe;QAEpC,GAAGe,SAAS;;YAEZM;YACAjB;;;AAGP,EAAE"}
|