From 2ef5054f7b8eb1c2a2b041475109da4e66dca19d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Gran=C3=A1t?= Date: Tue, 27 Feb 2024 12:01:47 +0100 Subject: [PATCH] feat: support '=' in the plural parameters --- src/parser/lezer/tolgee.grammar | 6 ++-- src/parser/lezer/tolgeeParser.tags.test.ts | 40 ++++++++++++++++++++++ src/parser/lezer/tolgeeParser.test.ts | 33 ++++++------------ src/parser/lezer/tolgeeParser.ts | 2 +- src/parser/tolgeeFormatGenerateIcu.ts | 4 +-- src/parser/tolgeeSyntax.ts | 1 + 6 files changed, 58 insertions(+), 28 deletions(-) create mode 100644 src/parser/lezer/tolgeeParser.tags.test.ts diff --git a/src/parser/lezer/tolgee.grammar b/src/parser/lezer/tolgee.grammar index 56e8af5..33d7428 100644 --- a/src/parser/lezer/tolgee.grammar +++ b/src/parser/lezer/tolgee.grammar @@ -16,7 +16,7 @@ VariantContent { contentNested? } Offset { offset_definition } SelectFunction { select_function } -Param { name } +Param { identifier } VariantDescriptor { variant_descriptor } ExpressionOpen { "{" } ExpressionClose { "}" } @@ -48,9 +48,9 @@ HtmlTagNested { HtmlTagOpenNested | HtmlTagCloseNested } plural_placeholder { '#' } // non-White_Space and non-PatternSyntax // https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt - name { ![\u{0009}-\u{000d}\u{0020}\u{0085}\u{00A0}\u{1680}\u{2000}-\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0021}-\u{0023}\u{0024}\u{0025}-\u{0027}\u{0028}\u{0029}\u{002A}\u{002B}\u{002C}\u{002D}\u{002E}-\u{002F}\u{003A}-\u{003B}\u{003C}-\u{003E}\u{003F}-\u{0040}\u{005B}\u{005C}\u{005D}\u{005E}\u{0060}\u{007B}\u{007C}\u{007D}\u{007E}\u{00A1}\u{00A2}-\u{00A5}\u{00A6}\u{00A7}\u{00A9}\u{00AB}\u{00AC}\u{00AE}\u{00B0}\u{00B1}\u{00B6}\u{00BB}\u{00BF}\u{00D7}\u{00F7}\u{2010}-\u{2015}\u{2016}-\u{2017}\u{2018}\u{2019}\u{201A}\u{201B}-\u{201C}\u{201D}\u{201E}\u{201F}\u{2020}-\u{2027}\u{2030}-\u{2038}\u{2039}\u{203A}\u{203B}-\u{203E}\u{2041}-\u{2043}\u{2044}\u{2045}\u{2046}\u{2047}-\u{2051}\u{2052}\u{2053}\u{2055}-\u{205E}\u{2190}-\u{2194}\u{2195}-\u{2199}\u{219A}-\u{219B}\u{219C}-\u{219F}\u{21A0}\u{21A1}-\u{21A2}\u{21A3}\u{21A4}-\u{21A5}\u{21A6}\u{21A7}-\u{21AD}\u{21AE}\u{21AF}-\u{21CD}\u{21CE}-\u{21CF}\u{21D0}-\u{21D1}\u{21D2}\u{21D3}\u{21D4}\u{21D5}-\u{21F3}\u{21F4}-\u{22FF}\u{2300}-\u{2307}\u{2308}\u{2309}\u{230A}\u{230B}\u{230C}-\u{231F}\u{2320}-\u{2321}\u{2322}-\u{2328}\u{2329}\u{232A}\u{232B}-\u{237B}\u{237C}\u{237D}-\u{239A}\u{239B}-\u{23B3}\u{23B4}-\u{23DB}\u{23DC}-\u{23E1}\u{23E2}-\u{2426}\u{2427}-\u{243F}\u{2440}-\u{244A}\u{244B}-\u{245F}\u{2500}-\u{25B6}\u{25B7}\u{25B8}-\u{25C0}\u{25C1}\u{25C2}-\u{25F7}\u{25F8}-\u{25FF}\u{2600}-\u{266E}\u{266F}\u{2670}-\u{2767}\u{2768}\u{2769}\u{276A}\u{276B}\u{276C}\u{276D}\u{276E}\u{276F}\u{2770}\u{2771}\u{2772}\u{2773}\u{2774}\u{2775}\u{2794}-\u{27BF}\u{27C0}-\u{27C4}\u{27C5}\u{27C6}\u{27C7}-\u{27E5}\u{27E6}\u{27E7}\u{27E8}\u{27E9}\u{27EA}\u{27EB}\u{27EC}\u{27ED}\u{27EE}\u{27EF}\u{27F0}-\u{27FF}\u{2800}-\u{28FF}\u{2900}-\u{2982}\u{2983}\u{2984}\u{2985}\u{2986}\u{2987}\u{2988}\u{2989}\u{298A}\u{298B}\u{298C}\u{298D}\u{298E}\u{298F}\u{2990}\u{2991}\u{2992}\u{2993}\u{2994}\u{2995}\u{2996}\u{2997}\u{2998}\u{2999}-\u{29D7}\u{29D8}\u{29D9}\u{29DA}\u{29DB}\u{29DC}-\u{29FB}\u{29FC}\u{29FD}\u{29FE}-\u{2AFF}\u{2B00}-\u{2B2F}\u{2B30}-\u{2B44}\u{2B45}-\u{2B46}\u{2B47}-\u{2B4C}\u{2B4D}-\u{2B73}\u{2B74}-\u{2B75}\u{2B76}-\u{2B95}\u{2B96}\u{2B97}-\u{2BFF}\u{2E00}-\u{2E01}\u{2E02}\u{2E03}\u{2E04}\u{2E05}\u{2E06}-\u{2E08}\u{2E09}\u{2E0A}\u{2E0B}\u{2E0C}\u{2E0D}\u{2E0E}-\u{2E16}\u{2E17}\u{2E18}-\u{2E19}\u{2E1A}\u{2E1B}\u{2E1C}\u{2E1D}\u{2E1E}-\u{2E1F}\u{2E20}\u{2E21}\u{2E22}\u{2E23}\u{2E24}\u{2E25}\u{2E26}\u{2E27}\u{2E28}\u{2E29}\u{2E2A}-\u{2E2E}\u{2E2F}\u{2E30}-\u{2E39}\u{2E3A}-\u{2E3B}\u{2E3C}-\u{2E3F}\u{2E40}\u{2E41}\u{2E42}\u{2E43}-\u{2E4F}\u{2E50}-\u{2E51}\u{2E52}-\u{2E54}\u{2E55}\u{2E56}\u{2E57}\u{2E58}\u{2E59}\u{2E5A}\u{2E5B}\u{2E5C}\u{2E5D}\u{2E5E}-\u{2E7F}\u{3001}-\u{3003}\u{3008}\u{3009}\u{300A}\u{300B}\u{300C}\u{300D}\u{300E}\u{300F}\u{3010}\u{3011}\u{3012}-\u{3013}\u{3014}\u{3015}\u{3016}\u{3017}\u{3018}\u{3019}\u{301A}\u{301B}\u{301C}\u{301D}\u{301E}-\u{301F}\u{3020}\u{3030}\u{FD3E}\u{FD3F}\u{FE45}-\u{FE46}]+ } + identifier { ![\u{0009}-\u{000d}\u{0020}\u{0085}\u{00A0}\u{1680}\u{2000}-\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0021}-\u{0023}\u{0024}\u{0025}-\u{0027}\u{0028}\u{0029}\u{002A}\u{002B}\u{002C}\u{002D}\u{002E}-\u{002F}\u{003A}-\u{003B}\u{003C}-\u{003E}\u{003F}-\u{0040}\u{005B}\u{005C}\u{005D}\u{005E}\u{0060}\u{007B}\u{007C}\u{007D}\u{007E}\u{00A1}\u{00A2}-\u{00A5}\u{00A6}\u{00A7}\u{00A9}\u{00AB}\u{00AC}\u{00AE}\u{00B0}\u{00B1}\u{00B6}\u{00BB}\u{00BF}\u{00D7}\u{00F7}\u{2010}-\u{2015}\u{2016}-\u{2017}\u{2018}\u{2019}\u{201A}\u{201B}-\u{201C}\u{201D}\u{201E}\u{201F}\u{2020}-\u{2027}\u{2030}-\u{2038}\u{2039}\u{203A}\u{203B}-\u{203E}\u{2041}-\u{2043}\u{2044}\u{2045}\u{2046}\u{2047}-\u{2051}\u{2052}\u{2053}\u{2055}-\u{205E}\u{2190}-\u{2194}\u{2195}-\u{2199}\u{219A}-\u{219B}\u{219C}-\u{219F}\u{21A0}\u{21A1}-\u{21A2}\u{21A3}\u{21A4}-\u{21A5}\u{21A6}\u{21A7}-\u{21AD}\u{21AE}\u{21AF}-\u{21CD}\u{21CE}-\u{21CF}\u{21D0}-\u{21D1}\u{21D2}\u{21D3}\u{21D4}\u{21D5}-\u{21F3}\u{21F4}-\u{22FF}\u{2300}-\u{2307}\u{2308}\u{2309}\u{230A}\u{230B}\u{230C}-\u{231F}\u{2320}-\u{2321}\u{2322}-\u{2328}\u{2329}\u{232A}\u{232B}-\u{237B}\u{237C}\u{237D}-\u{239A}\u{239B}-\u{23B3}\u{23B4}-\u{23DB}\u{23DC}-\u{23E1}\u{23E2}-\u{2426}\u{2427}-\u{243F}\u{2440}-\u{244A}\u{244B}-\u{245F}\u{2500}-\u{25B6}\u{25B7}\u{25B8}-\u{25C0}\u{25C1}\u{25C2}-\u{25F7}\u{25F8}-\u{25FF}\u{2600}-\u{266E}\u{266F}\u{2670}-\u{2767}\u{2768}\u{2769}\u{276A}\u{276B}\u{276C}\u{276D}\u{276E}\u{276F}\u{2770}\u{2771}\u{2772}\u{2773}\u{2774}\u{2775}\u{2794}-\u{27BF}\u{27C0}-\u{27C4}\u{27C5}\u{27C6}\u{27C7}-\u{27E5}\u{27E6}\u{27E7}\u{27E8}\u{27E9}\u{27EA}\u{27EB}\u{27EC}\u{27ED}\u{27EE}\u{27EF}\u{27F0}-\u{27FF}\u{2800}-\u{28FF}\u{2900}-\u{2982}\u{2983}\u{2984}\u{2985}\u{2986}\u{2987}\u{2988}\u{2989}\u{298A}\u{298B}\u{298C}\u{298D}\u{298E}\u{298F}\u{2990}\u{2991}\u{2992}\u{2993}\u{2994}\u{2995}\u{2996}\u{2997}\u{2998}\u{2999}-\u{29D7}\u{29D8}\u{29D9}\u{29DA}\u{29DB}\u{29DC}-\u{29FB}\u{29FC}\u{29FD}\u{29FE}-\u{2AFF}\u{2B00}-\u{2B2F}\u{2B30}-\u{2B44}\u{2B45}-\u{2B46}\u{2B47}-\u{2B4C}\u{2B4D}-\u{2B73}\u{2B74}-\u{2B75}\u{2B76}-\u{2B95}\u{2B96}\u{2B97}-\u{2BFF}\u{2E00}-\u{2E01}\u{2E02}\u{2E03}\u{2E04}\u{2E05}\u{2E06}-\u{2E08}\u{2E09}\u{2E0A}\u{2E0B}\u{2E0C}\u{2E0D}\u{2E0E}-\u{2E16}\u{2E17}\u{2E18}-\u{2E19}\u{2E1A}\u{2E1B}\u{2E1C}\u{2E1D}\u{2E1E}-\u{2E1F}\u{2E20}\u{2E21}\u{2E22}\u{2E23}\u{2E24}\u{2E25}\u{2E26}\u{2E27}\u{2E28}\u{2E29}\u{2E2A}-\u{2E2E}\u{2E2F}\u{2E30}-\u{2E39}\u{2E3A}-\u{2E3B}\u{2E3C}-\u{2E3F}\u{2E40}\u{2E41}\u{2E42}\u{2E43}-\u{2E4F}\u{2E50}-\u{2E51}\u{2E52}-\u{2E54}\u{2E55}\u{2E56}\u{2E57}\u{2E58}\u{2E59}\u{2E5A}\u{2E5B}\u{2E5C}\u{2E5D}\u{2E5E}-\u{2E7F}\u{3001}-\u{3003}\u{3008}\u{3009}\u{300A}\u{300B}\u{300C}\u{300D}\u{300E}\u{300F}\u{3010}\u{3011}\u{3012}-\u{3013}\u{3014}\u{3015}\u{3016}\u{3017}\u{3018}\u{3019}\u{301A}\u{301B}\u{301C}\u{301D}\u{301E}-\u{301F}\u{3020}\u{3030}\u{FD3E}\u{FD3F}\u{FE45}-\u{FE46}]+ } select_function { 'plural' | 'selectordinal' | 'select' } - variant_descriptor { name } + variant_descriptor { '='? ('-' | '+')? identifier } space { @whitespace+ } format_function { 'number' | 'date' | 'time' } // non-White_Space diff --git a/src/parser/lezer/tolgeeParser.tags.test.ts b/src/parser/lezer/tolgeeParser.tags.test.ts new file mode 100644 index 0000000..9e192e9 --- /dev/null +++ b/src/parser/lezer/tolgeeParser.tags.test.ts @@ -0,0 +1,40 @@ +import { parse } from "@formatjs/icu-messageformat-parser"; +import { parser } from "./tolgeeParser"; + +function icu(text: string, ignoreTag = true) { + return parse(text, { + captureLocation: true, + ignoreTag, + }); +} + +function tolgee(text: string) { + return parser.configure({ strict: true, dialect: "tags" }).parse(text); +} + +function getText() { + return expect.getState().currentTestName!.replace("simple formatter ", ""); +} + +function matchIcu(text = getText()) { + expect(() => icu(text)).not.toThrow(); + expect(() => tolgee(text)).not.toThrow(); +} + +describe("tolgee parser with tags", () => { + test("This is < invalid > tag", () => { + matchIcu(); + }); + + test("Test valid tag", () => { + matchIcu(); + }); + + test("Test '' escaped tag", () => { + matchIcu(); + }); + + test("tag escaping causing also more stuff to be escaped", () => { + matchIcu("This ' {} is all escaped"); + }); +}); diff --git a/src/parser/lezer/tolgeeParser.test.ts b/src/parser/lezer/tolgeeParser.test.ts index 1c6a28b..7ee2c40 100644 --- a/src/parser/lezer/tolgeeParser.test.ts +++ b/src/parser/lezer/tolgeeParser.test.ts @@ -9,7 +9,7 @@ function icu(text: string, ignoreTag = true) { } function tolgee(text: string) { - return parser.configure({ strict: true, dialect: "tags" }).parse(text); + return parser.configure({ strict: true }).parse(text); } function getText() { @@ -21,14 +21,12 @@ function matchIcu(text = getText()) { expect(() => tolgee(text)).not.toThrow(); } -function matchIcuWithTags(text = getText()) { - expect(() => icu(text, false)).not.toThrow(); - expect(() => tolgee(text)).not.toThrow(); +function expectToThrowWithIcu(text = getText()) { + expect(() => icu(text)).toThrow(); + expect(() => tolgee(text)).toThrow(); } -function expectToThrowWithIcu() { - const text = getText(); - expect(() => icu(text)).toThrow(); +function expectToThrow(text = getText()) { expect(() => tolgee(text)).toThrow(); } @@ -142,22 +140,13 @@ describe("simple formatter", () => { expectToThrowWithIcu(); }); - test("This is < invalid > tag", () => { - matchIcu(); - }); - - test("Test valid tag", () => { - matchIcuWithTags(); - matchIcu(); - }); - - test("Test '' escaped tag", () => { - matchIcuWithTags(); - matchIcu(); + test("Wont take tags as escapabable", () => { + expectToThrow("{value, plural, other {'<>'}}"); }); - test("tag escaping causing also more stuff to be escaped", () => { - matchIcuWithTags("This ' {} is all escaped"); - matchIcu("This ' {} is all escaped"); + test("Accepts ={number} format", () => { + matchIcu( + "Auto translated {test, plural, =1 {# translation} other {# translations}}" + ); }); }); diff --git a/src/parser/lezer/tolgeeParser.ts b/src/parser/lezer/tolgeeParser.ts index 433de70..fc44715 100644 --- a/src/parser/lezer/tolgeeParser.ts +++ b/src/parser/lezer/tolgeeParser.ts @@ -10,7 +10,7 @@ export const parser = LRParser.deserialize({ maxTerm: 40, skippedNodes: [0], repeatNodeCount: 2, - tokenData: "$@Q~R!{OX&xX^,n^p&xpq,nqs+^st-ct|+^|}.i}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#W&x#W#X.n#X#b&x#b#c@s#c#d!)k#d#e!Hr#e#g&x#g#h#5}#h#i$5o#i#o&x#o#p$>u#p#q+^#q#r$?{#r#s+^#s#y&x#y#z,n#z$f&x$f$g,n$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BY#BZ,n#BZ$IS&x$IS$I_,n$I_$Id&x$Id$I|+^$I|$JO,n$JO$JT&x$JT$JU,n$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KV$KW,n$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FU&FV,n&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]'R!csSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&xS+c_sSOX+^^p+^q|+^}#q+^#r#y+^#z$f+^$g#BY+^#BZ$IS+^$I_$I|+^$JO$JT+^$JU$KV+^$KW&FU+^&FV;'S+^;'S;=`,b<%lO+^S,eP;=`<%l+^],kP;=`<%l&x~,sYo~X^,npq,n#y#z,n$f$g,n#BY#BZ,n$IS$I_,n$I|$JO,n$JT$JU,n$KV$KW,n&FU&FV,nT-j_sSxPOX+^^p+^q|+^}#q+^#r#y+^#z$f+^$g#BY+^#BZ$IS+^$I_$I|+^$JO$JT+^$JU$KV+^$KW&FU+^&FV;'S+^;'S;=`,b<%lO+^~.nOq~_.w!dsSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#U3V#U#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_3`!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#h&x#h#i7q#i#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_7z!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#X&x#X#Y<]#Y#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_@|!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#i&x#i#jE_#j#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_Eh!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#a&x#a#bIy#b#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_JS!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#U&x#U#VNe#V#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_Nn!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#X&x#X#Y!%P#Y#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_!%Y!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#f&x#f#g<]#g#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]!)t!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#Y&x#Y#Z!.V#Z#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]!.`!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#Y&x#Y#Z!2q#Z#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]!2z!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#g&x#g#h!7]#h#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]!7f!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#X&x#X#Y!;w#Y#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]!`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x]!@l!dsSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!]!Dz!]!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x[!EPcsSOX+^^p+^q{+^{|!F[}!O!F[!O!Q+^!Q![!Gf![#q+^#r#y+^#z$f+^$g#BY+^#BZ$IS+^$I_$I|+^$JO$JT+^$JU$KV+^$KW&FU+^&FV;'S+^;'S;=`,b<%lO+^[!FaasSOX+^^p+^q|+^}!Q+^!Q![!Gf![#q+^#r#y+^#z$f+^$g#BY+^#BZ$IS+^$I_$I|+^$JO$JT+^$JU$KV+^$KW&FU+^&FV;'S+^;'S;=`,b<%lO+^[!GmasSuWOX+^^p+^q|+^}!Q+^!Q![!Gf![#q+^#r#y+^#z$f+^$g#BY+^#BZ$IS+^$I_$I|+^$JO$JT+^$JU$KV+^$KW&FU+^&FV;'S+^;'S;=`,b<%lO+^_!H{!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#`&x#`#a!M^#a#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_!Mg!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#i&x#i#j##x#j#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#$R!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#f&x#f#g#(d#g#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#(m!dsSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#U#,{#U#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#-U!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#`&x#`#a#1g#a#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#1r!csSpPtQvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#6W!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#X&x#X#Y#:i#Y#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#:r!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#`&x#`#a#?T#a#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#?^!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#X&x#X#Y#Co#Y#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#Cx!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#V&x#V#W#HZ#W#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#Hd!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#h&x#h#i#Lu#i#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_#MQ!esSpPtQvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#c&x#c#d$#c#d#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_$#l!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#f&x#f#g$'}#g#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_$(W!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#W&x#W#X$,i#X#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_$,r!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#]&x#]#^$1T#^#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_$1^!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#b&x#b#c#(d#c#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_$5x!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#]&x#]#^$:Z#^#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&x_$:d!esSpPvWOX&x^p&xq|+^}!Q+^!Q![&x![!c+^!c!}&x!}#R+^#R#S&x#S#T+^#T#a&x#a#b7q#b#o&x#o#q+^#r#s+^#s#y&x#z$f&x$g$n+^$n$o&x$o$p+^$p$q&x$q$s+^$s$t&x$t$u+^$u$v&x$v$x+^$x$|&x$|$}+^$}%R&x%R%S+^%S%V&x%V%W+^%W%o&x%o%p+^%p&a&x&a&b+^&b#BY&x#BZ$IS&x$I_$Id&x$Id$I|+^$JO$JT&x$JU$Je+^$Je$Jg&x$Jg$Jz+^$Jz$J{&x$J{$KV+^$KW%#t&x%#t%3d+^%3d%6z&x%6z%Dl+^%Dl%E[&x%E[&/x+^&/x&;O&x&;O&=t+^&=t&FU&x&FV&FY+^&FY&F^&x&F^&Fw+^&Fw&GW&x&GW&GX+^&GX;'S&x;'S;=`,h<%l?>`&x?>`?>b+^?>b?DR&x?DR?DT+^?DTO&xT$>|_YPsSOX+^^p+^q|+^}#q+^#r#y+^#z$f+^$g#BY+^#BZ$IS+^$I_$I|+^$JO$JT+^$JU$KV+^$KW&FU+^&FV;'S+^;'S;=`,b<%lO+^~$@QOg~", + tokenData: "$Mn~R#POX'UX^,z^p'Upq,zqs+jst-ot{+j{|.u|}7o}!O.u!O!Q+j!Q!['U![!_+j!_!`7t!`!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#W'U#W#X<[#X#b'U#b#cNa#c#d!7X#d#e#(`#e#g'U#g#h#Ck#h#i$C]#i#o'U#o#p$Lc#p#q+j#q#r$Mi#r#s+j#s#y'U#y#z,z#z$f'U$f$g,z$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BY#BZ,z#BZ$IS'U$IS$I_,z$I_$Id'U$Id$I|+j$I|$JO,z$JO$JT'U$JT$JU,z$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KV$KW,z$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FU&FV,z&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]'_!csSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'US+o_sSOX+j^p+jq|+j}#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+jS,qP;=`<%l+j],wP;=`<%l'U~-PYo~X^,zpq,z#y#z,z$f$g,z#BY#BZ,z$IS$I_,z$I|$JO,z$JT$JU,z$KV$KW,z&FU&FV,zT-v_sSxPOX+j^p+jq|+j}#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j[.z!csSOX3V^p3Vq|+j}!Q+j!Q![3V![!c+j!c!}3V!}#R+j#R#S3V#S#T+j#T#o3V#o#q+j#r#s+j#s#y3V#z$f3V$g$n+j$n$o3V$o$p+j$p$q3V$q$s+j$s$t3V$t$u+j$u$v3V$v$x+j$x$|3V$|$}+j$}%R3V%R%S+j%S%V3V%V%W+j%W%o3V%o%p+j%p&a3V&a&b+j&b#BY3V#BZ$IS3V$I_$Id3V$Id$I|+j$JO$JT3V$JU$Je+j$Je$Jg3V$Jg$Jz+j$Jz$J{3V$J{$KV+j$KW%#t3V%#t%3d+j%3d%6z3V%6z%Dl+j%Dl%E[3V%E[&/x+j&/x&;O3V&;O&=t+j&=t&FU3V&FV&FY+j&FY&F^3V&F^&Fw+j&Fw&GW3V&GW&GX+j&GX;'S3V;'S;=`7i<%l?>`3V?>`?>b+j?>b?DR3V?DR?DT+j?DTO3V[3^!csSvWOX3V^p3Vq|+j}!Q+j!Q![3V![!c+j!c!}3V!}#R+j#R#S3V#S#T+j#T#o3V#o#q+j#r#s+j#s#y3V#z$f3V$g$n+j$n$o3V$o$p+j$p$q3V$q$s+j$s$t3V$t$u+j$u$v3V$v$x+j$x$|3V$|$}+j$}%R3V%R%S+j%S%V3V%V%W+j%W%o3V%o%p+j%p&a3V&a&b+j&b#BY3V#BZ$IS3V$I_$Id3V$Id$I|+j$JO$JT3V$JU$Je+j$Je$Jg3V$Jg$Jz+j$Jz$J{3V$J{$KV+j$KW%#t3V%#t%3d+j%3d%6z3V%6z%Dl+j%Dl%E[3V%E[&/x+j&/x&;O3V&;O&=t+j&=t&FU3V&FV&FY+j&FY&F^3V&F^&Fw+j&Fw&GW3V&GW&GX+j&GX;'S3V;'S;=`7i<%l?>`3V?>`?>b+j?>b?DR3V?DR?DT+j?DTO3V[7lP;=`<%l3V~7tOq~[7y!esSOX3V^p3Vq{+j{|.u}!O.u!O!Q+j!Q![3V![!c+j!c!}3V!}#R+j#R#S3V#S#T+j#T#o3V#o#q+j#r#s+j#s#y3V#z$f3V$g$n+j$n$o3V$o$p+j$p$q3V$q$s+j$s$t3V$t$u+j$u$v3V$v$x+j$x$|3V$|$}+j$}%R3V%R%S+j%S%V3V%V%W+j%W%o3V%o%p+j%p&a3V&a&b+j&b#BY3V#BZ$IS3V$I_$Id3V$Id$I|+j$JO$JT3V$JU$Je+j$Je$Jg3V$Jg$Jz+j$Jz$J{3V$J{$KV+j$KW%#t3V%#t%3d+j%3d%6z3V%6z%Dl+j%Dl%E[3V%E[&/x+j&/x&;O3V&;O&=t+j&=t&FU3V&FV&FY+j&FY&F^3V&F^&Fw+j&Fw&GW3V&GW&GX+j&GX;'S3V;'S;=`7i<%l?>`3V?>`?>b+j?>b?DR3V?DR?DT+j?DTO3V_`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_@|!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#h'U#h#iE_#i#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_Eh!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#YIy#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_JU!crQsSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_Nj!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#i'U#i#j!${#j#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!%U!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#a'U#a#b!)g#b#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!)p!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#U'U#U#V!.R#V#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!.[!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y!2m#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!2v!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#f'U#f#gIy#g#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!7b!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#Y'U#Y#Z!;s#Z#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!;|!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#Y'U#Y#Z!@_#Z#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!@h!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#g'U#g#h!Dy#h#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!ES!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y!Ie#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!In!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#h'U#h#i!NP#i#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!NY!dsSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!]#$h!]!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U[#$mcsSOX+j^p+jq{+j{|#%x}!O#%x!O!Q+j!Q![#'S![#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j[#%}asSOX+j^p+jq|+j}!Q+j!Q![#'S![#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j[#'ZasSuWOX+j^p+jq|+j}!Q+j!Q![#'S![#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j_#(i!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#`'U#`#a#,z#a#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#-T!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#i'U#i#j#1f#j#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#1o!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#f'U#f#g#6Q#g#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#6Z!dsSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#U#:i#U#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#:r!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#`'U#`#a#?T#a#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#?`!csSpPtQvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#Ct!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y#HV#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#H`!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#`'U#`#a#Lq#a#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#Lz!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y$#]#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$#f!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#V'U#V#W$'w#W#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$(Q!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#h'U#h#i$,c#i#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$,n!esSpPtQvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#c'U#c#d$1P#d#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$1Y!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#f'U#f#g$5k#g#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$5t!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#W'U#W#X$:V#X#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$:`!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#]'U#]#^$>q#^#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$>z!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#b'U#b#c#6Q#c#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$Cf!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#]'U#]#^$Gw#^#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$HQ!esSpPvWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#a'U#a#bE_#b#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'UT$Lj_YPsSOX+j^p+jq|+j}#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j~$MnOg~", tokenizers: [text, textNested, 0, 1, 2, 3], topRules: {"Root":[0,7],"Nested":[1,26]}, dialects: {tags: 0}, diff --git a/src/parser/tolgeeFormatGenerateIcu.ts b/src/parser/tolgeeFormatGenerateIcu.ts index 73e550f..d8ec383 100644 --- a/src/parser/tolgeeFormatGenerateIcu.ts +++ b/src/parser/tolgeeFormatGenerateIcu.ts @@ -1,10 +1,10 @@ import { checkParamNameIsValid } from "./checkParamNameIsValid"; import { escapeIcuVariant } from "./escapeIcuPart"; -import { parse } from "@formatjs/icu-messageformat-parser"; +import { parser } from "./lezer/tolgeeParser"; import { TolgeeFormat } from "./types"; function parseIcu(input: string) { - return parse(input, { ignoreTag: true }); + return parser.configure({ strict: true }).parse(input); } export const tolgeeFormatGenerateIcu = (format: TolgeeFormat) => { diff --git a/src/parser/tolgeeSyntax.ts b/src/parser/tolgeeSyntax.ts index 33763b4..69d7c91 100644 --- a/src/parser/tolgeeSyntax.ts +++ b/src/parser/tolgeeSyntax.ts @@ -10,6 +10,7 @@ export const lezerLanguage = (nested: boolean) => name: "icu-tolgee", parser: parser.configure({ top: nested ? "Nested" : "Root", + dialect: "tags", props: [ styleTags({ TextRoot: t.string,