{"version":3,"file":"cnt.bundle.js","sources":["../src/cnt-color.js","../src/cnt-size.js","../src/cnt.js"],"sourcesContent":["/**\n * @namespace {BX.UI}\n */\nexport default class CounterColor\n{\n\tstatic DANGER = \"ui-counter-danger\";\n\tstatic WARNING = \"ui-counter-warning\";\n\tstatic SUCCESS = \"ui-counter-success\";\n\tstatic PRIMARY = \"ui-counter-primary\";\n\tstatic GRAY = \"ui-counter-gray\";\n\tstatic LIGHT = \"ui-counter-light\";\n\tstatic WHITE = \"ui-counter-white\";\n\tstatic DARK = \"ui-counter-dark\";\n\tstatic THEME = \"ui-counter-theme\";\n}\n","/**\n * @namespace {BX.UI}\n */\nexport default class CounterSize\n{\n\tstatic SMALL = \"ui-counter-sm\";\n\tstatic LARGE = \"ui-counter-lg\";\n\tstatic MEDIUM = \"ui-counter-md\";\n}\n","// @flow\n\nimport {Dom, Tag, Type} from 'main.core';\nimport CounterColor from './cnt-color';\nimport CounterSize from './cnt-size';\n\ntype CounterOptions = {\n\tvalue: number;\n\tmaxValue: number;\n\tcolor: CounterColor;\n\tborder: boolean;\n\tsize: string;\n};\n\nexport default class Counter\n{\n\tstatic Color = CounterColor;\n\tstatic Size = CounterSize;\n\n\tconstructor(options: CounterOptions)\n\t{\n\t\tthis.options = Type.isPlainObject(options) ? options : {};\n\n\t\tthis.container = null;\n\t\tthis.counterContainer = null;\n\t\tthis.animate = Type.isBoolean(this.options.animate) ? this.options.animate : false;\n\t\tthis.value = Type.isNumber(this.options.value) ? this.options.value : 0;\n\t\tthis.maxValue = Type.isNumber(this.options.maxValue) ? this.options.maxValue : 99;\n\t\tthis.size = Type.isString(this.options.size) ? this.options.size : BX.UI.Counter.Size.MEDIUM;\n\t\tthis.color = Type.isString(this.options.color) ? this.options.color : BX.UI.Counter.Color.PRIMARY;\n\t\tthis.border = Type.isBoolean(this.options.border) ? this.options.border : false;\n\t}\n\n\t//region Parameters\n\tsetValue(value: number): this\n\t{\n\t\tif (Type.isNumber(value))\n\t\t{\n\t\t\tthis.value = (value < 0) ? 0 : value;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetValue(): number\n\t{\n\t\tif (this.value <= this.maxValue)\n\t\t{\n\t\t\treturn this.value;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.maxValue + \"+\";\n\t\t}\n\t}\n\n\tsetMaxValue(value: number): this\n\t{\n\t\tif (Type.isNumber(value))\n\t\t{\n\t\t\tthis.value = (value < 0) ? 0 : value;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetMaxValue(): number\n\t{\n\t\treturn this.maxValue;\n\t}\n\n\tisBorder(): boolean\n\t{\n\t\treturn this.border;\n\t}\n\n\tsetColor(color: CounterColor): this\n\t{\n\t\tif (Type.isStringFilled(color))\n\t\t{\n\t\t\tif (this.container === null)\n\t\t\t{\n\t\t\t\tthis.createContainer();\n\t\t\t}\n\n\t\t\tDom.removeClass(this.container, this.color);\n\t\t\tthis.color = color;\n\t\t\tDom.addClass(this.container, this.color);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsetSize(size: CounterSize): this\n\t{\n\t\tif (Type.isStringFilled(size))\n\t\t{\n\t\t\tBX.removeClass(this.container, this.size);\n\t\t\tthis.size = size;\n\t\t\tBX.addClass(this.container, this.size);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsetAnimate(animate: boolean): this\n\t{\n\t\tif (Type.isBoolean(animate))\n\t\t{\n\t\t\tthis.animate = animate;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsetBorder(border: boolean): this\n\t{\n\t\tif (!Type.isBoolean(border))\n\t\t{\n\t\t\tconsole.warn('Parameter \"border\" is not boolean');\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.border = border;\n\t\tconst borderedCounterClassname = this.#getBorderClassname(border);\n\n\t\tif (border)\n\t\t{\n\t\t\tDom.addClass(this.container, borderedCounterClassname);\n\t\t} else\n\t\t{\n\t\t\tDom.removeClass(this.container, borderedCounterClassname);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t#getBorderClassname(border: boolean): string\n\t{\n\t\tif (border)\n\t\t{\n\t\t\treturn 'ui-counter-border';\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn '';\n\t\t}\n\t}\n\n\t//endregion\n\n\t// region Counter\n\tupdate(value)\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.createContainer();\n\t\t}\n\n\t\tif (this.animate == true)\n\t\t{\n\t\t\tthis.updateAnimated(value);\n\t\t}\n\t\telse if (this.animate == false)\n\t\t{\n\t\t\tthis.setValue(value);\n\t\t\tDom.adjust(this.counterContainer, {\n\t\t\t\ttext: this.getValue()\n\t\t\t});\n\t\t}\n\n\t}\n\n\tupdateAnimated(value)\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.createContainer();\n\t\t}\n\n\t\tif (value > this.value && this.value < this.maxValue)\n\t\t{\n\t\t\tDom.addClass(this.counterContainer, \"ui-counter-plus\");\n\t\t}\n\t\telse if (value < this.value && this.value < this.maxValue)\n\t\t{\n\t\t\tDom.addClass(this.counterContainer, \"ui-counter-minus\");\n\t\t}\n\n\t\tsetTimeout(function ()\n\t\t\t{\n\t\t\t\tthis.setValue(value);\n\t\t\t\tDom.adjust(this.counterContainer, {\n\t\t\t\t\ttext: this.getValue()\n\t\t\t\t});\n\t\t\t}.bind(this),\n\t\t\t250);\n\n\t\tsetTimeout(function ()\n\t\t\t{\n\t\t\t\tDom.removeClass(this.counterContainer, \"ui-counter-plus\");\n\t\t\t\tDom.removeClass(this.counterContainer, \"ui-counter-minus\");\n\t\t\t}.bind(this),\n\t\t\t500);\n\t}\n\n\tshow()\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.createContainer();\n\t\t}\n\n\t\tDom.addClass(this.container, \"ui-counter-show\");\n\t\tDom.removeClass(this.container, \"ui-counter-hide\");\n\t}\n\n\thide()\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.createContainer();\n\t\t}\n\n\t\tDom.addClass(this.container, \"ui-counter-hide\");\n\t\tDom.removeClass(this.container, \"ui-counter-show\");\n\t}\n\n\tgetCounterContainer()\n\t{\n\t\tif (this.counterContainer === null)\n\t\t{\n\t\t\tthis.counterContainer = Tag.render`\n\t\t\t\t
${this.getValue()}
\n\t\t\t`;\n\t\t}\n\n\t\treturn this.counterContainer;\n\t}\n\n\tcreateContainer(): HTMLElement\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.container = Tag.render`\n\t\t\t\t
${this.getCounterContainer()}
\n\t\t\t`;\n\n\t\t\tthis.setSize(this.size);\n\t\t\tthis.setColor(this.color);\n\t\t\tthis.setBorder(this.border);\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\t//endregion\n\n\tgetContainer(): Element\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.createContainer();\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\trenderTo(node: HTMLElement): HTMLElement | null\n\t{\n\t\tif (Type.isDomNode(node))\n\t\t{\n\t\t\treturn node.appendChild(this.getContainer());\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tdestroy(): void\n\t{\n\t\tDom.remove(this.container);\n\t\tthis.container = null;\n\t\tthis.finished = false;\n\t\tthis.textAfterContainer = null;\n\t\tthis.textBeforeContainer = null;\n\t\tthis.bar = null;\n\t\tthis.svg = null;\n\n\t\tfor (const property in this)\n\t\t{\n\t\t\tif (this.hasOwnProperty(property))\n\t\t\t{\n\t\t\t\tdelete this[property];\n\t\t\t}\n\t\t}\n\n\t\tObject.setPrototypeOf(this, null);\n\t}\n}\n"],"names":["CounterColor","DANGER","WARNING","SUCCESS","PRIMARY","GRAY","LIGHT","WHITE","DARK","THEME","CounterSize","SMALL","LARGE","MEDIUM","Counter","constructor","options","Type","isPlainObject","container","counterContainer","animate","isBoolean","value","isNumber","maxValue","size","isString","BX","UI","Size","color","Color","border","setValue","getValue","setMaxValue","getMaxValue","isBorder","setColor","isStringFilled","createContainer","Dom","removeClass","addClass","setSize","setAnimate","setBorder","console","warn","borderedCounterClassname","update","updateAnimated","adjust","text","setTimeout","bind","show","hide","getCounterContainer","Tag","render","getContainer","renderTo","node","isDomNode","appendChild","destroy","remove","finished","textAfterContainer","textBeforeContainer","bar","svg","property","hasOwnProperty","Object","setPrototypeOf"],"mappings":";;;;;CAAA;CACA;CACA;AACA,CAAe,MAAMA,YAAY,CACjC;CADqBA,YAAY,CAEzBC,MAAM,GAAG,mBAAmB;CAFfD,YAAY,CAGzBE,OAAO,GAAG,oBAAoB;CAHjBF,YAAY,CAIzBG,OAAO,GAAG,oBAAoB;CAJjBH,YAAY,CAKzBI,OAAO,GAAG,oBAAoB;CALjBJ,YAAY,CAMzBK,IAAI,GAAG,iBAAiB;CANXL,YAAY,CAOzBM,KAAK,GAAG,kBAAkB;CAPbN,YAAY,CAQzBO,KAAK,GAAG,kBAAkB;CARbP,YAAY,CASzBQ,IAAI,GAAG,iBAAiB;CATXR,YAAY,CAUzBS,KAAK,GAAG,kBAAkB;;CCblC;CACA;CACA;AACA,CAAe,MAAMC,WAAW,CAChC;CADqBA,WAAW,CAExBC,KAAK,GAAG,eAAe;CAFVD,WAAW,CAGxBE,KAAK,GAAG,eAAe;CAHVF,WAAW,CAIxBG,MAAM,GAAG,eAAe;;;;;ACLhC,CAEqC;AAUrC,CAAe,MAAMC,OAAO,CAC5B;GAICC,WAAW,CAACC,OAAuB,EACnC;KAAA;OAAA;;KACC,IAAI,CAACA,OAAO,GAAGC,cAAI,CAACC,aAAa,CAACF,OAAO,CAAC,GAAGA,OAAO,GAAG,EAAE;KAEzD,IAAI,CAACG,SAAS,GAAG,IAAI;KACrB,IAAI,CAACC,gBAAgB,GAAG,IAAI;KAC5B,IAAI,CAACC,OAAO,GAAGJ,cAAI,CAACK,SAAS,CAAC,IAAI,CAACN,OAAO,CAACK,OAAO,CAAC,GAAG,IAAI,CAACL,OAAO,CAACK,OAAO,GAAG,KAAK;KAClF,IAAI,CAACE,KAAK,GAAGN,cAAI,CAACO,QAAQ,CAAC,IAAI,CAACR,OAAO,CAACO,KAAK,CAAC,GAAG,IAAI,CAACP,OAAO,CAACO,KAAK,GAAG,CAAC;KACvE,IAAI,CAACE,QAAQ,GAAGR,cAAI,CAACO,QAAQ,CAAC,IAAI,CAACR,OAAO,CAACS,QAAQ,CAAC,GAAG,IAAI,CAACT,OAAO,CAACS,QAAQ,GAAG,EAAE;KACjF,IAAI,CAACC,IAAI,GAAGT,cAAI,CAACU,QAAQ,CAAC,IAAI,CAACX,OAAO,CAACU,IAAI,CAAC,GAAG,IAAI,CAACV,OAAO,CAACU,IAAI,GAAGE,EAAE,CAACC,EAAE,CAACf,OAAO,CAACgB,IAAI,CAACjB,MAAM;KAC5F,IAAI,CAACkB,KAAK,GAAGd,cAAI,CAACU,QAAQ,CAAC,IAAI,CAACX,OAAO,CAACe,KAAK,CAAC,GAAG,IAAI,CAACf,OAAO,CAACe,KAAK,GAAGH,EAAE,CAACC,EAAE,CAACf,OAAO,CAACkB,KAAK,CAAC5B,OAAO;KACjG,IAAI,CAAC6B,MAAM,GAAGhB,cAAI,CAACK,SAAS,CAAC,IAAI,CAACN,OAAO,CAACiB,MAAM,CAAC,GAAG,IAAI,CAACjB,OAAO,CAACiB,MAAM,GAAG,KAAK;;;;GAIhFC,QAAQ,CAACX,KAAa,EACtB;KACC,IAAIN,cAAI,CAACO,QAAQ,CAACD,KAAK,CAAC,EACxB;OACC,IAAI,CAACA,KAAK,GAAIA,KAAK,GAAG,CAAC,GAAI,CAAC,GAAGA,KAAK;;KAGrC,OAAO,IAAI;;GAGZY,QAAQ,GACR;KACC,IAAI,IAAI,CAACZ,KAAK,IAAI,IAAI,CAACE,QAAQ,EAC/B;OACC,OAAO,IAAI,CAACF,KAAK;MACjB,MAED;OACC,OAAO,IAAI,CAACE,QAAQ,GAAG,GAAG;;;GAI5BW,WAAW,CAACb,KAAa,EACzB;KACC,IAAIN,cAAI,CAACO,QAAQ,CAACD,KAAK,CAAC,EACxB;OACC,IAAI,CAACA,KAAK,GAAIA,KAAK,GAAG,CAAC,GAAI,CAAC,GAAGA,KAAK;;KAGrC,OAAO,IAAI;;GAGZc,WAAW,GACX;KACC,OAAO,IAAI,CAACZ,QAAQ;;GAGrBa,QAAQ,GACR;KACC,OAAO,IAAI,CAACL,MAAM;;GAGnBM,QAAQ,CAACR,KAAmB,EAC5B;KACC,IAAId,cAAI,CAACuB,cAAc,CAACT,KAAK,CAAC,EAC9B;OACC,IAAI,IAAI,CAACZ,SAAS,KAAK,IAAI,EAC3B;SACC,IAAI,CAACsB,eAAe,EAAE;;OAGvBC,aAAG,CAACC,WAAW,CAAC,IAAI,CAACxB,SAAS,EAAE,IAAI,CAACY,KAAK,CAAC;OAC3C,IAAI,CAACA,KAAK,GAAGA,KAAK;OAClBW,aAAG,CAACE,QAAQ,CAAC,IAAI,CAACzB,SAAS,EAAE,IAAI,CAACY,KAAK,CAAC;;KAGzC,OAAO,IAAI;;GAGZc,OAAO,CAACnB,IAAiB,EACzB;KACC,IAAIT,cAAI,CAACuB,cAAc,CAACd,IAAI,CAAC,EAC7B;OACCE,EAAE,CAACe,WAAW,CAAC,IAAI,CAACxB,SAAS,EAAE,IAAI,CAACO,IAAI,CAAC;OACzC,IAAI,CAACA,IAAI,GAAGA,IAAI;OAChBE,EAAE,CAACgB,QAAQ,CAAC,IAAI,CAACzB,SAAS,EAAE,IAAI,CAACO,IAAI,CAAC;;KAGvC,OAAO,IAAI;;GAGZoB,UAAU,CAACzB,OAAgB,EAC3B;KACC,IAAIJ,cAAI,CAACK,SAAS,CAACD,OAAO,CAAC,EAC3B;OACC,IAAI,CAACA,OAAO,GAAGA,OAAO;;KAGvB,OAAO,IAAI;;GAGZ0B,SAAS,CAACd,MAAe,EACzB;KACC,IAAI,CAAChB,cAAI,CAACK,SAAS,CAACW,MAAM,CAAC,EAC3B;OACCe,OAAO,CAACC,IAAI,CAAC,mCAAmC,CAAC;OACjD,OAAO,IAAI;;KAGZ,IAAI,CAAChB,MAAM,GAAGA,MAAM;KACpB,MAAMiB,wBAAwB,2CAAG,IAAI,4CAAqBjB,MAAM,CAAC;KAEjE,IAAIA,MAAM,EACV;OACCS,aAAG,CAACE,QAAQ,CAAC,IAAI,CAACzB,SAAS,EAAE+B,wBAAwB,CAAC;MACtD,MACD;OACCR,aAAG,CAACC,WAAW,CAAC,IAAI,CAACxB,SAAS,EAAE+B,wBAAwB,CAAC;;KAG1D,OAAO,IAAI;;;;;GAkBZC,MAAM,CAAC5B,KAAK,EACZ;KACC,IAAI,IAAI,CAACJ,SAAS,KAAK,IAAI,EAC3B;OACC,IAAI,CAACsB,eAAe,EAAE;;KAGvB,IAAI,IAAI,CAACpB,OAAO,IAAI,IAAI,EACxB;OACC,IAAI,CAAC+B,cAAc,CAAC7B,KAAK,CAAC;MAC1B,MACI,IAAI,IAAI,CAACF,OAAO,IAAI,KAAK,EAC9B;OACC,IAAI,CAACa,QAAQ,CAACX,KAAK,CAAC;OACpBmB,aAAG,CAACW,MAAM,CAAC,IAAI,CAACjC,gBAAgB,EAAE;SACjCkC,IAAI,EAAE,IAAI,CAACnB,QAAQ;QACnB,CAAC;;;GAKJiB,cAAc,CAAC7B,KAAK,EACpB;KACC,IAAI,IAAI,CAACJ,SAAS,KAAK,IAAI,EAC3B;OACC,IAAI,CAACsB,eAAe,EAAE;;KAGvB,IAAIlB,KAAK,GAAG,IAAI,CAACA,KAAK,IAAI,IAAI,CAACA,KAAK,GAAG,IAAI,CAACE,QAAQ,EACpD;OACCiB,aAAG,CAACE,QAAQ,CAAC,IAAI,CAACxB,gBAAgB,EAAE,iBAAiB,CAAC;MACtD,MACI,IAAIG,KAAK,GAAG,IAAI,CAACA,KAAK,IAAI,IAAI,CAACA,KAAK,GAAG,IAAI,CAACE,QAAQ,EACzD;OACCiB,aAAG,CAACE,QAAQ,CAAC,IAAI,CAACxB,gBAAgB,EAAE,kBAAkB,CAAC;;KAGxDmC,UAAU,CAAC,YACV;OACC,IAAI,CAACrB,QAAQ,CAACX,KAAK,CAAC;OACpBmB,aAAG,CAACW,MAAM,CAAC,IAAI,CAACjC,gBAAgB,EAAE;SACjCkC,IAAI,EAAE,IAAI,CAACnB,QAAQ;QACnB,CAAC;MACF,CAACqB,IAAI,CAAC,IAAI,CAAC,EACZ,GAAG,CAAC;KAELD,UAAU,CAAC,YACV;OACCb,aAAG,CAACC,WAAW,CAAC,IAAI,CAACvB,gBAAgB,EAAE,iBAAiB,CAAC;OACzDsB,aAAG,CAACC,WAAW,CAAC,IAAI,CAACvB,gBAAgB,EAAE,kBAAkB,CAAC;MAC1D,CAACoC,IAAI,CAAC,IAAI,CAAC,EACZ,GAAG,CAAC;;GAGNC,IAAI,GACJ;KACC,IAAI,IAAI,CAACtC,SAAS,KAAK,IAAI,EAC3B;OACC,IAAI,CAACsB,eAAe,EAAE;;KAGvBC,aAAG,CAACE,QAAQ,CAAC,IAAI,CAACzB,SAAS,EAAE,iBAAiB,CAAC;KAC/CuB,aAAG,CAACC,WAAW,CAAC,IAAI,CAACxB,SAAS,EAAE,iBAAiB,CAAC;;GAGnDuC,IAAI,GACJ;KACC,IAAI,IAAI,CAACvC,SAAS,KAAK,IAAI,EAC3B;OACC,IAAI,CAACsB,eAAe,EAAE;;KAGvBC,aAAG,CAACE,QAAQ,CAAC,IAAI,CAACzB,SAAS,EAAE,iBAAiB,CAAC;KAC/CuB,aAAG,CAACC,WAAW,CAAC,IAAI,CAACxB,SAAS,EAAE,iBAAiB,CAAC;;GAGnDwC,mBAAmB,GACnB;KACC,IAAI,IAAI,CAACvC,gBAAgB,KAAK,IAAI,EAClC;OACC,IAAI,CAACA,gBAAgB,GAAGwC,aAAG,CAACC,MAAM,cAAC;oCACJ,CAAkB;IACjD,GADiC,IAAI,CAAC1B,QAAQ,EAAE,CAC/C;;KAGF,OAAO,IAAI,CAACf,gBAAgB;;GAG7BqB,eAAe,GACf;KACC,IAAI,IAAI,CAACtB,SAAS,KAAK,IAAI,EAC3B;OACC,IAAI,CAACA,SAAS,GAAGyC,aAAG,CAACC,MAAM,gBAAC;8BACH,CAA6B;IACtD,GAD2B,IAAI,CAACF,mBAAmB,EAAE,CACpD;OAED,IAAI,CAACd,OAAO,CAAC,IAAI,CAACnB,IAAI,CAAC;OACvB,IAAI,CAACa,QAAQ,CAAC,IAAI,CAACR,KAAK,CAAC;OACzB,IAAI,CAACgB,SAAS,CAAC,IAAI,CAACd,MAAM,CAAC;;KAG5B,OAAO,IAAI,CAACd,SAAS;;;;;GAKtB2C,YAAY,GACZ;KACC,IAAI,IAAI,CAAC3C,SAAS,KAAK,IAAI,EAC3B;OACC,IAAI,CAACsB,eAAe,EAAE;;KAGvB,OAAO,IAAI,CAACtB,SAAS;;GAGtB4C,QAAQ,CAACC,IAAiB,EAC1B;KACC,IAAI/C,cAAI,CAACgD,SAAS,CAACD,IAAI,CAAC,EACxB;OACC,OAAOA,IAAI,CAACE,WAAW,CAAC,IAAI,CAACJ,YAAY,EAAE,CAAC;;KAG7C,OAAO,IAAI;;GAGZK,OAAO,GACP;KACCzB,aAAG,CAAC0B,MAAM,CAAC,IAAI,CAACjD,SAAS,CAAC;KAC1B,IAAI,CAACA,SAAS,GAAG,IAAI;KACrB,IAAI,CAACkD,QAAQ,GAAG,KAAK;KACrB,IAAI,CAACC,kBAAkB,GAAG,IAAI;KAC9B,IAAI,CAACC,mBAAmB,GAAG,IAAI;KAC/B,IAAI,CAACC,GAAG,GAAG,IAAI;KACf,IAAI,CAACC,GAAG,GAAG,IAAI;KAEf,KAAK,MAAMC,QAAQ,IAAI,IAAI,EAC3B;OACC,IAAI,IAAI,CAACC,cAAc,CAACD,QAAQ,CAAC,EACjC;SACC,OAAO,IAAI,CAACA,QAAQ,CAAC;;;KAIvBE,MAAM,CAACC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;;CAEnC;CAAC,8BAjKoB5C,MAAe,EACnC;GACC,IAAIA,MAAM,EACV;KACC,OAAO,mBAAmB;IAC1B,MAED;KACC,OAAO,EAAE;;CAEX;CArIoBnB,OAAO,CAEpBkB,KAAK,GAAGhC,YAAY;CAFPc,OAAO,CAGpBgB,IAAI,GAAGpB,WAAW;;;;;;;;;;"}