codemirror-languageserver 1.15.0 → 1.17.0

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/demo/dist/demo.js CHANGED
@@ -4873,7 +4873,7 @@ let nav = typeof navigator != "undefined" ? navigator : {
4873
4873
  vendor: "",
4874
4874
  platform: ""
4875
4875
  };
4876
- let doc = typeof document != "undefined" ? document : {
4876
+ let doc$1 = typeof document != "undefined" ? document : {
4877
4877
  documentElement: {
4878
4878
  style: {}
4879
4879
  }
@@ -4884,7 +4884,7 @@ const ie_11up = /*@__PURE__*//Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(nav.us
4884
4884
  const ie$1 = !!(ie_upto10 || ie_11up || ie_edge);
4885
4885
  const gecko = !ie$1 && /*@__PURE__*//gecko\/(\d+)/i.test(nav.userAgent);
4886
4886
  const chrome = !ie$1 && /*@__PURE__*//Chrome\/(\d+)/.exec(nav.userAgent);
4887
- const webkit = "webkitFontSmoothing" in doc.documentElement.style;
4887
+ const webkit = "webkitFontSmoothing" in doc$1.documentElement.style;
4888
4888
  const safari = !ie$1 && /*@__PURE__*//Apple Computer/.test(nav.vendor);
4889
4889
  const ios = safari && (/*@__PURE__*//Mobile\/\w+/.test(nav.userAgent) || nav.maxTouchPoints > 2);
4890
4890
  var browser$2 = {
@@ -4892,7 +4892,7 @@ var browser$2 = {
4892
4892
  windows: /*@__PURE__*//Win/.test(nav.platform),
4893
4893
  linux: /*@__PURE__*//Linux|X11/.test(nav.platform),
4894
4894
  ie: ie$1,
4895
- ie_version: ie_upto10 ? doc.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0,
4895
+ ie_version: ie_upto10 ? doc$1.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0,
4896
4896
  gecko,
4897
4897
  gecko_version: gecko ? +(/*@__PURE__*//Firefox\/(\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,
4898
4898
  chrome: !!chrome,
@@ -4901,7 +4901,7 @@ var browser$2 = {
4901
4901
  android: /*@__PURE__*//Android\b/.test(nav.userAgent),
4902
4902
  safari,
4903
4903
  webkit_version: webkit ? +(/*@__PURE__*//\bAppleWebKit\/(\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,
4904
- tabSize: doc.documentElement.style.tabSize != null ? "tab-size" : "-moz-tab-size"
4904
+ tabSize: doc$1.documentElement.style.tabSize != null ? "tab-size" : "-moz-tab-size"
4905
4905
  };
4906
4906
  const MaxJoinLen = 256;
4907
4907
  class TextView extends ContentView {
@@ -14325,7 +14325,7 @@ but also provides an `active` property holding a state field that
14325
14325
  can be used to read the currently active tooltips produced by this
14326
14326
  extension.
14327
14327
  */
14328
- function hoverTooltip(source, options = {}) {
14328
+ function hoverTooltip$1(source, options = {}) {
14329
14329
  let setHover = StateEffect.define();
14330
14330
  let hoverState = StateField.define({
14331
14331
  create() {
@@ -15271,49 +15271,6 @@ class NodeType {
15271
15271
  An empty dummy node type to use when no actual type is available.
15272
15272
  */
15273
15273
  NodeType.none = new NodeType("", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);
15274
- /**
15275
- A node set holds a collection of node types. It is used to
15276
- compactly represent trees by storing their type ids, rather than a
15277
- full pointer to the type object, in a numeric array. Each parser
15278
- [has](#lr.LRParser.nodeSet) a node set, and [tree
15279
- buffers](#common.TreeBuffer) can only store collections of nodes
15280
- from the same set. A set can have a maximum of 2**16 (65536) node
15281
- types in it, so that the ids fit into 16-bit typed array slots.
15282
- */
15283
- class NodeSet {
15284
- /**
15285
- Create a set with the given types. The `id` property of each
15286
- type should correspond to its position within the array.
15287
- */
15288
- constructor(
15289
- /**
15290
- The node types in this set, by id.
15291
- */
15292
- types) {
15293
- this.types = types;
15294
- for (let i = 0; i < types.length; i++) if (types[i].id != i) throw new RangeError("Node type ids should correspond to array positions when creating a node set");
15295
- }
15296
- /**
15297
- Create a copy of this set with some node properties added. The
15298
- arguments to this method can be created with
15299
- [`NodeProp.add`](#common.NodeProp.add).
15300
- */
15301
- extend(...props) {
15302
- let newTypes = [];
15303
- for (let type of this.types) {
15304
- let newProps = null;
15305
- for (let source of props) {
15306
- let add = source(type);
15307
- if (add) {
15308
- if (!newProps) newProps = Object.assign({}, type.props);
15309
- newProps[add[0].id] = add[1];
15310
- }
15311
- }
15312
- newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);
15313
- }
15314
- return new NodeSet(newTypes);
15315
- }
15316
- }
15317
15274
  const CachedNode = new WeakMap(),
15318
15275
  CachedInnerNode = new WeakMap();
15319
15276
  /**
@@ -17506,19 +17463,6 @@ facet that stores language-specific data for that language.
17506
17463
  */
17507
17464
  const languageDataProp = /*@__PURE__*/new NodeProp();
17508
17465
  /**
17509
- Helper function to define a facet (to be added to the top syntax
17510
- node(s) for a language via
17511
- [`languageDataProp`](https://codemirror.net/6/docs/ref/#language.languageDataProp)), that will be
17512
- used to associate language data with the language. You
17513
- probably only need this when subclassing
17514
- [`Language`](https://codemirror.net/6/docs/ref/#language.Language).
17515
- */
17516
- function defineLanguageFacet(baseData) {
17517
- return Facet.define({
17518
- combine: baseData ? values => values.concat(baseData) : undefined
17519
- });
17520
- }
17521
- /**
17522
17466
  A language object manages parsing and per-language
17523
17467
  [metadata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt). Parse data is
17524
17468
  managed as a [Lezer](https://lezer.codemirror.net) tree. The class
@@ -17627,36 +17571,6 @@ function languageDataFacetAt(state, pos, side) {
17627
17571
  return facet;
17628
17572
  }
17629
17573
  /**
17630
- A subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language) for use with Lezer
17631
- [LR parsers](https://lezer.codemirror.net/docs/ref#lr.LRParser)
17632
- parsers.
17633
- */
17634
- class LRLanguage extends Language {
17635
- constructor(data, parser) {
17636
- super(data, parser);
17637
- this.parser = parser;
17638
- }
17639
- /**
17640
- Define a language from a parser.
17641
- */
17642
- static define(spec) {
17643
- let data = defineLanguageFacet(spec.languageData);
17644
- return new LRLanguage(data, spec.parser.configure({
17645
- props: [languageDataProp.add(type => type.isTop ? data : undefined)]
17646
- }));
17647
- }
17648
- /**
17649
- Create a new instance of this language with a reconfigured
17650
- version of its parser.
17651
- */
17652
- configure(options) {
17653
- return new LRLanguage(this.data, this.parser.configure(options));
17654
- }
17655
- get allowsNesting() {
17656
- return this.parser.hasWrappers();
17657
- }
17658
- }
17659
- /**
17660
17574
  Get the syntax tree for a state, which is the current (possibly
17661
17575
  incomplete) parse tree of the active
17662
17576
  [language](https://codemirror.net/6/docs/ref/#language.Language), or the empty tree if there is no
@@ -18096,34 +18010,6 @@ const language = /*@__PURE__*/Facet.define({
18096
18010
  },
18097
18011
  enables: [Language.state, parseWorker]
18098
18012
  });
18099
- /**
18100
- This class bundles a [language](https://codemirror.net/6/docs/ref/#language.Language) with an
18101
- optional set of supporting extensions. Language packages are
18102
- encouraged to export a function that optionally takes a
18103
- configuration object and returns a `LanguageSupport` instance, as
18104
- the main way for client code to use the package.
18105
- */
18106
- class LanguageSupport {
18107
- /**
18108
- Create a language support object.
18109
- */
18110
- constructor(
18111
- /**
18112
- The language object.
18113
- */
18114
- language,
18115
- /**
18116
- An optional set of supporting extensions. When nesting a
18117
- language in another language, the outer language is encouraged
18118
- to include the supporting extensions for its inner languages
18119
- in its own set of support extensions.
18120
- */
18121
- support = []) {
18122
- this.language = language;
18123
- this.support = support;
18124
- this.extension = [language, support];
18125
- }
18126
- }
18127
18013
 
18128
18014
  /**
18129
18015
  Facet that defines a way to provide a function that computes the
@@ -18411,54 +18297,14 @@ function bracketedAligned(context) {
18411
18297
  pos = next.to;
18412
18298
  }
18413
18299
  }
18414
- /**
18415
- An indentation strategy for delimited (usually bracketed) nodes.
18416
- Will, by default, indent one unit more than the parent's base
18417
- indent unless the line starts with a closing token. When `align`
18418
- is true and there are non-skipped nodes on the node's opening
18419
- line, the content of the node will be aligned with the end of the
18420
- opening node, like this:
18421
-
18422
- foo(bar,
18423
- baz)
18424
- */
18425
- function delimitedIndent({
18426
- closing,
18427
- align = true,
18428
- units = 1
18429
- }) {
18430
- return context => delimitedStrategy(context, align, units, closing);
18431
- }
18432
18300
  function delimitedStrategy(context, align, units, closing, closedAt) {
18433
18301
  let after = context.textAfter,
18434
18302
  space = after.match(/^\s*/)[0].length;
18435
18303
  let closed = closing && after.slice(space, space + closing.length) == closing || closedAt == context.pos + space;
18436
- let aligned = align ? bracketedAligned(context) : null;
18304
+ let aligned = bracketedAligned(context) ;
18437
18305
  if (aligned) return closed ? context.column(aligned.from) : context.column(aligned.to);
18438
18306
  return context.baseIndent + (closed ? 0 : context.unit * units);
18439
18307
  }
18440
- /**
18441
- An indentation strategy that aligns a node's content to its base
18442
- indentation.
18443
- */
18444
- const flatIndent = context => context.baseIndent;
18445
- /**
18446
- Creates an indentation strategy that, by default, indents
18447
- continued lines one unit more than the node's base indentation.
18448
- You can provide `except` to prevent indentation of lines that
18449
- match a pattern (for example `/^else\b/` in `if`/`else`
18450
- constructs), and you can change the amount of units used with the
18451
- `units` option.
18452
- */
18453
- function continuedIndent({
18454
- except,
18455
- units = 1
18456
- } = {}) {
18457
- return context => {
18458
- let matchExcept = except && except.test(context.textAfter);
18459
- return context.baseIndent + (matchExcept ? 0 : units * context.unit);
18460
- };
18461
- }
18462
18308
  const DontIndentBeyond = 200;
18463
18309
  /**
18464
18310
  Enables reindentation on input. When a language defines an
@@ -18528,19 +18374,6 @@ that tree is foldable and return the range that can be collapsed
18528
18374
  when it is.
18529
18375
  */
18530
18376
  const foldNodeProp = /*@__PURE__*/new NodeProp();
18531
- /**
18532
- [Fold](https://codemirror.net/6/docs/ref/#language.foldNodeProp) function that folds everything but
18533
- the first and the last child of a syntax node. Useful for nodes
18534
- that start and end with delimiters.
18535
- */
18536
- function foldInside(node) {
18537
- let first = node.firstChild,
18538
- last = node.lastChild;
18539
- return first && first.to < last.from ? {
18540
- from: first.to,
18541
- to: last.type.isError ? node.to : last.from
18542
- } : null;
18543
- }
18544
18377
  function syntaxFolding(state, start, end) {
18545
18378
  let tree = syntaxTree(state);
18546
18379
  if (tree.length < end) return null;
@@ -24101,7 +23934,7 @@ function canStartStringAt(state, pos, prefixes) {
24101
23934
  /**
24102
23935
  Returns an extension that enables autocompletion.
24103
23936
  */
24104
- function autocompletion(config = {}) {
23937
+ function autocompletion$1(config = {}) {
24105
23938
  return [commitCharacters, completionState, completionConfig.of(config), completionPlugin, completionKeymapExt, baseTheme$1];
24106
23939
  }
24107
23940
  /**
@@ -24784,1843 +24617,12 @@ const lintExtensions = [lintState, /*@__PURE__*/EditorView.decorations.compute([
24784
24617
  panel
24785
24618
  } = state.field(lintState);
24786
24619
  return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([activeMark.range(selected.from, selected.to)]);
24787
- }), /*@__PURE__*/hoverTooltip(lintTooltip, {
24620
+ }), /*@__PURE__*/hoverTooltip$1(lintTooltip, {
24788
24621
  hideOn: hideTooltip
24789
24622
  }), baseTheme];
24790
24623
 
24791
24624
  var global$2 = typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};
24792
24625
 
24793
- var env = {};
24794
-
24795
- // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
24796
- var performance = global$2.performance || {};
24797
- performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function () {
24798
- return new Date().getTime();
24799
- };
24800
- var browser$1$1 = {
24801
- env: env};
24802
-
24803
- /// A parse stack. These are used internally by the parser to track
24804
- /// parsing progress. They also provide some properties and methods
24805
- /// that external code such as a tokenizer can use to get information
24806
- /// about the parse state.
24807
- class Stack {
24808
- /// @internal
24809
- constructor(
24810
- /// The parse that this stack is part of @internal
24811
- p,
24812
- /// Holds state, input pos, buffer index triplets for all but the
24813
- /// top state @internal
24814
- stack,
24815
- /// The current parse state @internal
24816
- state,
24817
- // The position at which the next reduce should take place. This
24818
- // can be less than `this.pos` when skipped expressions have been
24819
- // added to the stack (which should be moved outside of the next
24820
- // reduction)
24821
- /// @internal
24822
- reducePos,
24823
- /// The input position up to which this stack has parsed.
24824
- pos,
24825
- /// The dynamic score of the stack, including dynamic precedence
24826
- /// and error-recovery penalties
24827
- /// @internal
24828
- score,
24829
- // The output buffer. Holds (type, start, end, size) quads
24830
- // representing nodes created by the parser, where `size` is
24831
- // amount of buffer array entries covered by this node.
24832
- /// @internal
24833
- buffer,
24834
- // The base offset of the buffer. When stacks are split, the split
24835
- // instance shared the buffer history with its parent up to
24836
- // `bufferBase`, which is the absolute offset (including the
24837
- // offset of previous splits) into the buffer at which this stack
24838
- // starts writing.
24839
- /// @internal
24840
- bufferBase,
24841
- /// @internal
24842
- curContext,
24843
- /// @internal
24844
- lookAhead = 0,
24845
- // A parent stack from which this was split off, if any. This is
24846
- // set up so that it always points to a stack that has some
24847
- // additional buffer content, never to a stack with an equal
24848
- // `bufferBase`.
24849
- /// @internal
24850
- parent) {
24851
- this.p = p;
24852
- this.stack = stack;
24853
- this.state = state;
24854
- this.reducePos = reducePos;
24855
- this.pos = pos;
24856
- this.score = score;
24857
- this.buffer = buffer;
24858
- this.bufferBase = bufferBase;
24859
- this.curContext = curContext;
24860
- this.lookAhead = lookAhead;
24861
- this.parent = parent;
24862
- }
24863
- /// @internal
24864
- toString() {
24865
- return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? "!" + this.score : ""}`;
24866
- }
24867
- // Start an empty stack
24868
- /// @internal
24869
- static start(p, state, pos = 0) {
24870
- let cx = p.parser.context;
24871
- return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);
24872
- }
24873
- /// The stack's current [context](#lr.ContextTracker) value, if
24874
- /// any. Its type will depend on the context tracker's type
24875
- /// parameter, or it will be `null` if there is no context
24876
- /// tracker.
24877
- get context() {
24878
- return this.curContext ? this.curContext.context : null;
24879
- }
24880
- // Push a state onto the stack, tracking its start position as well
24881
- // as the buffer base at that point.
24882
- /// @internal
24883
- pushState(state, start) {
24884
- this.stack.push(this.state, start, this.bufferBase + this.buffer.length);
24885
- this.state = state;
24886
- }
24887
- // Apply a reduce action
24888
- /// @internal
24889
- reduce(action) {
24890
- let depth = action >> 19 /* ReduceDepthShift */,
24891
- type = action & 65535 /* ValueMask */;
24892
- let {
24893
- parser
24894
- } = this.p;
24895
- let dPrec = parser.dynamicPrecedence(type);
24896
- if (dPrec) this.score += dPrec;
24897
- if (depth == 0) {
24898
- this.pushState(parser.getGoto(this.state, type, true), this.reducePos);
24899
- // Zero-depth reductions are a special case—they add stuff to
24900
- // the stack without popping anything off.
24901
- if (type < parser.minRepeatTerm) this.storeNode(type, this.reducePos, this.reducePos, 4, true);
24902
- this.reduceContext(type, this.reducePos);
24903
- return;
24904
- }
24905
- // Find the base index into `this.stack`, content after which will
24906
- // be dropped. Note that with `StayFlag` reductions we need to
24907
- // consume two extra frames (the dummy parent node for the skipped
24908
- // expression and the state that we'll be staying in, which should
24909
- // be moved to `this.state`).
24910
- let base = this.stack.length - (depth - 1) * 3 - (action & 262144 /* StayFlag */ ? 6 : 0);
24911
- let start = this.stack[base - 2];
24912
- let bufferBase = this.stack[base - 1],
24913
- count = this.bufferBase + this.buffer.length - bufferBase;
24914
- // Store normal terms or `R -> R R` repeat reductions
24915
- if (type < parser.minRepeatTerm || action & 131072 /* RepeatFlag */) {
24916
- let pos = parser.stateFlag(this.state, 1 /* Skipped */) ? this.pos : this.reducePos;
24917
- this.storeNode(type, start, pos, count + 4, true);
24918
- }
24919
- if (action & 262144 /* StayFlag */) {
24920
- this.state = this.stack[base];
24921
- } else {
24922
- let baseStateID = this.stack[base - 3];
24923
- this.state = parser.getGoto(baseStateID, type, true);
24924
- }
24925
- while (this.stack.length > base) this.stack.pop();
24926
- this.reduceContext(type, start);
24927
- }
24928
- // Shift a value into the buffer
24929
- /// @internal
24930
- storeNode(term, start, end, size = 4, isReduce = false) {
24931
- if (term == 0 /* Err */ && (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {
24932
- // Try to omit/merge adjacent error nodes
24933
- let cur = this,
24934
- top = this.buffer.length;
24935
- if (top == 0 && cur.parent) {
24936
- top = cur.bufferBase - cur.parent.bufferBase;
24937
- cur = cur.parent;
24938
- }
24939
- if (top > 0 && cur.buffer[top - 4] == 0 /* Err */ && cur.buffer[top - 1] > -1) {
24940
- if (start == end) return;
24941
- if (cur.buffer[top - 2] >= start) {
24942
- cur.buffer[top - 2] = end;
24943
- return;
24944
- }
24945
- }
24946
- }
24947
- if (!isReduce || this.pos == end) {
24948
- // Simple case, just append
24949
- this.buffer.push(term, start, end, size);
24950
- } else {
24951
- // There may be skipped nodes that have to be moved forward
24952
- let index = this.buffer.length;
24953
- if (index > 0 && this.buffer[index - 4] != 0 /* Err */) while (index > 0 && this.buffer[index - 2] > end) {
24954
- // Move this record forward
24955
- this.buffer[index] = this.buffer[index - 4];
24956
- this.buffer[index + 1] = this.buffer[index - 3];
24957
- this.buffer[index + 2] = this.buffer[index - 2];
24958
- this.buffer[index + 3] = this.buffer[index - 1];
24959
- index -= 4;
24960
- if (size > 4) size -= 4;
24961
- }
24962
- this.buffer[index] = term;
24963
- this.buffer[index + 1] = start;
24964
- this.buffer[index + 2] = end;
24965
- this.buffer[index + 3] = size;
24966
- }
24967
- }
24968
- // Apply a shift action
24969
- /// @internal
24970
- shift(action, next, nextEnd) {
24971
- let start = this.pos;
24972
- if (action & 131072 /* GotoFlag */) {
24973
- this.pushState(action & 65535 /* ValueMask */, this.pos);
24974
- } else if ((action & 262144 /* StayFlag */) == 0) {
24975
- // Regular shift
24976
- let nextState = action,
24977
- {
24978
- parser
24979
- } = this.p;
24980
- if (nextEnd > this.pos || next <= parser.maxNode) {
24981
- this.pos = nextEnd;
24982
- if (!parser.stateFlag(nextState, 1 /* Skipped */)) this.reducePos = nextEnd;
24983
- }
24984
- this.pushState(nextState, start);
24985
- this.shiftContext(next, start);
24986
- if (next <= parser.maxNode) this.buffer.push(next, start, nextEnd, 4);
24987
- } else {
24988
- // Shift-and-stay, which means this is a skipped token
24989
- this.pos = nextEnd;
24990
- this.shiftContext(next, start);
24991
- if (next <= this.p.parser.maxNode) this.buffer.push(next, start, nextEnd, 4);
24992
- }
24993
- }
24994
- // Apply an action
24995
- /// @internal
24996
- apply(action, next, nextEnd) {
24997
- if (action & 65536 /* ReduceFlag */) this.reduce(action);else this.shift(action, next, nextEnd);
24998
- }
24999
- // Add a prebuilt (reused) node into the buffer.
25000
- /// @internal
25001
- useNode(value, next) {
25002
- let index = this.p.reused.length - 1;
25003
- if (index < 0 || this.p.reused[index] != value) {
25004
- this.p.reused.push(value);
25005
- index++;
25006
- }
25007
- let start = this.pos;
25008
- this.reducePos = this.pos = start + value.length;
25009
- this.pushState(next, start);
25010
- this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);
25011
- if (this.curContext) this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));
25012
- }
25013
- // Split the stack. Due to the buffer sharing and the fact
25014
- // that `this.stack` tends to stay quite shallow, this isn't very
25015
- // expensive.
25016
- /// @internal
25017
- split() {
25018
- let parent = this;
25019
- let off = parent.buffer.length;
25020
- // Because the top of the buffer (after this.pos) may be mutated
25021
- // to reorder reductions and skipped tokens, and shared buffers
25022
- // should be immutable, this copies any outstanding skipped tokens
25023
- // to the new buffer, and puts the base pointer before them.
25024
- while (off > 0 && parent.buffer[off - 2] > parent.reducePos) off -= 4;
25025
- let buffer = parent.buffer.slice(off),
25026
- base = parent.bufferBase + off;
25027
- // Make sure parent points to an actual parent with content, if there is such a parent.
25028
- while (parent && base == parent.bufferBase) parent = parent.parent;
25029
- return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);
25030
- }
25031
- // Try to recover from an error by 'deleting' (ignoring) one token.
25032
- /// @internal
25033
- recoverByDelete(next, nextEnd) {
25034
- let isNode = next <= this.p.parser.maxNode;
25035
- if (isNode) this.storeNode(next, this.pos, nextEnd, 4);
25036
- this.storeNode(0 /* Err */, this.pos, nextEnd, isNode ? 8 : 4);
25037
- this.pos = this.reducePos = nextEnd;
25038
- this.score -= 190 /* Delete */;
25039
- }
25040
- /// Check if the given term would be able to be shifted (optionally
25041
- /// after some reductions) on this stack. This can be useful for
25042
- /// external tokenizers that want to make sure they only provide a
25043
- /// given token when it applies.
25044
- canShift(term) {
25045
- for (let sim = new SimulatedStack(this);;) {
25046
- let action = this.p.parser.stateSlot(sim.state, 4 /* DefaultReduce */) || this.p.parser.hasAction(sim.state, term);
25047
- if ((action & 65536 /* ReduceFlag */) == 0) return true;
25048
- if (action == 0) return false;
25049
- sim.reduce(action);
25050
- }
25051
- }
25052
- // Apply up to Recover.MaxNext recovery actions that conceptually
25053
- // inserts some missing token or rule.
25054
- /// @internal
25055
- recoverByInsert(next) {
25056
- if (this.stack.length >= 300 /* MaxInsertStackDepth */) return [];
25057
- let nextStates = this.p.parser.nextStates(this.state);
25058
- if (nextStates.length > 4 /* MaxNext */ << 1 || this.stack.length >= 120 /* DampenInsertStackDepth */) {
25059
- let best = [];
25060
- for (let i = 0, s; i < nextStates.length; i += 2) {
25061
- if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next)) best.push(nextStates[i], s);
25062
- }
25063
- if (this.stack.length < 120 /* DampenInsertStackDepth */) for (let i = 0; best.length < 4 /* MaxNext */ << 1 && i < nextStates.length; i += 2) {
25064
- let s = nextStates[i + 1];
25065
- if (!best.some((v, i) => i & 1 && v == s)) best.push(nextStates[i], s);
25066
- }
25067
- nextStates = best;
25068
- }
25069
- let result = [];
25070
- for (let i = 0; i < nextStates.length && result.length < 4 /* MaxNext */; i += 2) {
25071
- let s = nextStates[i + 1];
25072
- if (s == this.state) continue;
25073
- let stack = this.split();
25074
- stack.pushState(s, this.pos);
25075
- stack.storeNode(0 /* Err */, stack.pos, stack.pos, 4, true);
25076
- stack.shiftContext(nextStates[i], this.pos);
25077
- stack.score -= 200 /* Insert */;
25078
- result.push(stack);
25079
- }
25080
- return result;
25081
- }
25082
- // Force a reduce, if possible. Return false if that can't
25083
- // be done.
25084
- /// @internal
25085
- forceReduce() {
25086
- let reduce = this.p.parser.stateSlot(this.state, 5 /* ForcedReduce */);
25087
- if ((reduce & 65536 /* ReduceFlag */) == 0) return false;
25088
- let {
25089
- parser
25090
- } = this.p;
25091
- if (!parser.validAction(this.state, reduce)) {
25092
- let depth = reduce >> 19 /* ReduceDepthShift */,
25093
- term = reduce & 65535 /* ValueMask */;
25094
- let target = this.stack.length - depth * 3;
25095
- if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) return false;
25096
- this.storeNode(0 /* Err */, this.reducePos, this.reducePos, 4, true);
25097
- this.score -= 100 /* Reduce */;
25098
- }
25099
- this.reducePos = this.pos;
25100
- this.reduce(reduce);
25101
- return true;
25102
- }
25103
- /// @internal
25104
- forceAll() {
25105
- while (!this.p.parser.stateFlag(this.state, 2 /* Accepting */)) {
25106
- if (!this.forceReduce()) {
25107
- this.storeNode(0 /* Err */, this.pos, this.pos, 4, true);
25108
- break;
25109
- }
25110
- }
25111
- return this;
25112
- }
25113
- /// Check whether this state has no further actions (assumed to be a direct descendant of the
25114
- /// top state, since any other states must be able to continue
25115
- /// somehow). @internal
25116
- get deadEnd() {
25117
- if (this.stack.length != 3) return false;
25118
- let {
25119
- parser
25120
- } = this.p;
25121
- return parser.data[parser.stateSlot(this.state, 1 /* Actions */)] == 65535 /* End */ && !parser.stateSlot(this.state, 4 /* DefaultReduce */);
25122
- }
25123
- /// Restart the stack (put it back in its start state). Only safe
25124
- /// when this.stack.length == 3 (state is directly below the top
25125
- /// state). @internal
25126
- restart() {
25127
- this.state = this.stack[0];
25128
- this.stack.length = 0;
25129
- }
25130
- /// @internal
25131
- sameState(other) {
25132
- if (this.state != other.state || this.stack.length != other.stack.length) return false;
25133
- for (let i = 0; i < this.stack.length; i += 3) if (this.stack[i] != other.stack[i]) return false;
25134
- return true;
25135
- }
25136
- /// Get the parser used by this stack.
25137
- get parser() {
25138
- return this.p.parser;
25139
- }
25140
- /// Test whether a given dialect (by numeric ID, as exported from
25141
- /// the terms file) is enabled.
25142
- dialectEnabled(dialectID) {
25143
- return this.p.parser.dialect.flags[dialectID];
25144
- }
25145
- shiftContext(term, start) {
25146
- if (this.curContext) this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));
25147
- }
25148
- reduceContext(term, start) {
25149
- if (this.curContext) this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));
25150
- }
25151
- /// @internal
25152
- emitContext() {
25153
- let last = this.buffer.length - 1;
25154
- if (last < 0 || this.buffer[last] != -3) this.buffer.push(this.curContext.hash, this.reducePos, this.reducePos, -3);
25155
- }
25156
- /// @internal
25157
- emitLookAhead() {
25158
- let last = this.buffer.length - 1;
25159
- if (last < 0 || this.buffer[last] != -4) this.buffer.push(this.lookAhead, this.reducePos, this.reducePos, -4);
25160
- }
25161
- updateContext(context) {
25162
- if (context != this.curContext.context) {
25163
- let newCx = new StackContext(this.curContext.tracker, context);
25164
- if (newCx.hash != this.curContext.hash) this.emitContext();
25165
- this.curContext = newCx;
25166
- }
25167
- }
25168
- /// @internal
25169
- setLookAhead(lookAhead) {
25170
- if (lookAhead > this.lookAhead) {
25171
- this.emitLookAhead();
25172
- this.lookAhead = lookAhead;
25173
- }
25174
- }
25175
- /// @internal
25176
- close() {
25177
- if (this.curContext && this.curContext.tracker.strict) this.emitContext();
25178
- if (this.lookAhead > 0) this.emitLookAhead();
25179
- }
25180
- }
25181
- class StackContext {
25182
- constructor(tracker, context) {
25183
- this.tracker = tracker;
25184
- this.context = context;
25185
- this.hash = tracker.strict ? tracker.hash(context) : 0;
25186
- }
25187
- }
25188
- var Recover;
25189
- (function (Recover) {
25190
- Recover[Recover["Insert"] = 200] = "Insert";
25191
- Recover[Recover["Delete"] = 190] = "Delete";
25192
- Recover[Recover["Reduce"] = 100] = "Reduce";
25193
- Recover[Recover["MaxNext"] = 4] = "MaxNext";
25194
- Recover[Recover["MaxInsertStackDepth"] = 300] = "MaxInsertStackDepth";
25195
- Recover[Recover["DampenInsertStackDepth"] = 120] = "DampenInsertStackDepth";
25196
- })(Recover || (Recover = {}));
25197
- // Used to cheaply run some reductions to scan ahead without mutating
25198
- // an entire stack
25199
- class SimulatedStack {
25200
- constructor(start) {
25201
- this.start = start;
25202
- this.state = start.state;
25203
- this.stack = start.stack;
25204
- this.base = this.stack.length;
25205
- }
25206
- reduce(action) {
25207
- let term = action & 65535 /* ValueMask */,
25208
- depth = action >> 19 /* ReduceDepthShift */;
25209
- if (depth == 0) {
25210
- if (this.stack == this.start.stack) this.stack = this.stack.slice();
25211
- this.stack.push(this.state, 0, 0);
25212
- this.base += 3;
25213
- } else {
25214
- this.base -= (depth - 1) * 3;
25215
- }
25216
- let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);
25217
- this.state = goto;
25218
- }
25219
- }
25220
- // This is given to `Tree.build` to build a buffer, and encapsulates
25221
- // the parent-stack-walking necessary to read the nodes.
25222
- class StackBufferCursor {
25223
- constructor(stack, pos, index) {
25224
- this.stack = stack;
25225
- this.pos = pos;
25226
- this.index = index;
25227
- this.buffer = stack.buffer;
25228
- if (this.index == 0) this.maybeNext();
25229
- }
25230
- static create(stack, pos = stack.bufferBase + stack.buffer.length) {
25231
- return new StackBufferCursor(stack, pos, pos - stack.bufferBase);
25232
- }
25233
- maybeNext() {
25234
- let next = this.stack.parent;
25235
- if (next != null) {
25236
- this.index = this.stack.bufferBase - next.bufferBase;
25237
- this.stack = next;
25238
- this.buffer = next.buffer;
25239
- }
25240
- }
25241
- get id() {
25242
- return this.buffer[this.index - 4];
25243
- }
25244
- get start() {
25245
- return this.buffer[this.index - 3];
25246
- }
25247
- get end() {
25248
- return this.buffer[this.index - 2];
25249
- }
25250
- get size() {
25251
- return this.buffer[this.index - 1];
25252
- }
25253
- next() {
25254
- this.index -= 4;
25255
- this.pos -= 4;
25256
- if (this.index == 0) this.maybeNext();
25257
- }
25258
- fork() {
25259
- return new StackBufferCursor(this.stack, this.pos, this.index);
25260
- }
25261
- }
25262
- class CachedToken {
25263
- constructor() {
25264
- this.start = -1;
25265
- this.value = -1;
25266
- this.end = -1;
25267
- this.extended = -1;
25268
- this.lookAhead = 0;
25269
- this.mask = 0;
25270
- this.context = 0;
25271
- }
25272
- }
25273
- const nullToken = new CachedToken();
25274
- /// [Tokenizers](#lr.ExternalTokenizer) interact with the input
25275
- /// through this interface. It presents the input as a stream of
25276
- /// characters, tracking lookahead and hiding the complexity of
25277
- /// [ranges](#common.Parser.parse^ranges) from tokenizer code.
25278
- class InputStream {
25279
- /// @internal
25280
- constructor(
25281
- /// @internal
25282
- input,
25283
- /// @internal
25284
- ranges) {
25285
- this.input = input;
25286
- this.ranges = ranges;
25287
- /// @internal
25288
- this.chunk = "";
25289
- /// @internal
25290
- this.chunkOff = 0;
25291
- /// Backup chunk
25292
- this.chunk2 = "";
25293
- this.chunk2Pos = 0;
25294
- /// The character code of the next code unit in the input, or -1
25295
- /// when the stream is at the end of the input.
25296
- this.next = -1;
25297
- /// @internal
25298
- this.token = nullToken;
25299
- this.rangeIndex = 0;
25300
- this.pos = this.chunkPos = ranges[0].from;
25301
- this.range = ranges[0];
25302
- this.end = ranges[ranges.length - 1].to;
25303
- this.readNext();
25304
- }
25305
- /// @internal
25306
- resolveOffset(offset, assoc) {
25307
- let range = this.range,
25308
- index = this.rangeIndex;
25309
- let pos = this.pos + offset;
25310
- while (pos < range.from) {
25311
- if (!index) return null;
25312
- let next = this.ranges[--index];
25313
- pos -= range.from - next.to;
25314
- range = next;
25315
- }
25316
- while (assoc < 0 ? pos > range.to : pos >= range.to) {
25317
- if (index == this.ranges.length - 1) return null;
25318
- let next = this.ranges[++index];
25319
- pos += next.from - range.to;
25320
- range = next;
25321
- }
25322
- return pos;
25323
- }
25324
- /// Look at a code unit near the stream position. `.peek(0)` equals
25325
- /// `.next`, `.peek(-1)` gives you the previous character, and so
25326
- /// on.
25327
- ///
25328
- /// Note that looking around during tokenizing creates dependencies
25329
- /// on potentially far-away content, which may reduce the
25330
- /// effectiveness incremental parsing—when looking forward—or even
25331
- /// cause invalid reparses when looking backward more than 25 code
25332
- /// units, since the library does not track lookbehind.
25333
- peek(offset) {
25334
- let idx = this.chunkOff + offset,
25335
- pos,
25336
- result;
25337
- if (idx >= 0 && idx < this.chunk.length) {
25338
- pos = this.pos + offset;
25339
- result = this.chunk.charCodeAt(idx);
25340
- } else {
25341
- let resolved = this.resolveOffset(offset, 1);
25342
- if (resolved == null) return -1;
25343
- pos = resolved;
25344
- if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {
25345
- result = this.chunk2.charCodeAt(pos - this.chunk2Pos);
25346
- } else {
25347
- let i = this.rangeIndex,
25348
- range = this.range;
25349
- while (range.to <= pos) range = this.ranges[++i];
25350
- this.chunk2 = this.input.chunk(this.chunk2Pos = pos);
25351
- if (pos + this.chunk2.length > range.to) this.chunk2 = this.chunk2.slice(0, range.to - pos);
25352
- result = this.chunk2.charCodeAt(0);
25353
- }
25354
- }
25355
- if (pos >= this.token.lookAhead) this.token.lookAhead = pos + 1;
25356
- return result;
25357
- }
25358
- /// Accept a token. By default, the end of the token is set to the
25359
- /// current stream position, but you can pass an offset (relative to
25360
- /// the stream position) to change that.
25361
- acceptToken(token, endOffset = 0) {
25362
- let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;
25363
- if (end == null || end < this.token.start) throw new RangeError("Token end out of bounds");
25364
- this.token.value = token;
25365
- this.token.end = end;
25366
- }
25367
- getChunk() {
25368
- if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {
25369
- let {
25370
- chunk,
25371
- chunkPos
25372
- } = this;
25373
- this.chunk = this.chunk2;
25374
- this.chunkPos = this.chunk2Pos;
25375
- this.chunk2 = chunk;
25376
- this.chunk2Pos = chunkPos;
25377
- this.chunkOff = this.pos - this.chunkPos;
25378
- } else {
25379
- this.chunk2 = this.chunk;
25380
- this.chunk2Pos = this.chunkPos;
25381
- let nextChunk = this.input.chunk(this.pos);
25382
- let end = this.pos + nextChunk.length;
25383
- this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;
25384
- this.chunkPos = this.pos;
25385
- this.chunkOff = 0;
25386
- }
25387
- }
25388
- readNext() {
25389
- if (this.chunkOff >= this.chunk.length) {
25390
- this.getChunk();
25391
- if (this.chunkOff == this.chunk.length) return this.next = -1;
25392
- }
25393
- return this.next = this.chunk.charCodeAt(this.chunkOff);
25394
- }
25395
- /// Move the stream forward N (defaults to 1) code units. Returns
25396
- /// the new value of [`next`](#lr.InputStream.next).
25397
- advance(n = 1) {
25398
- this.chunkOff += n;
25399
- while (this.pos + n >= this.range.to) {
25400
- if (this.rangeIndex == this.ranges.length - 1) return this.setDone();
25401
- n -= this.range.to - this.pos;
25402
- this.range = this.ranges[++this.rangeIndex];
25403
- this.pos = this.range.from;
25404
- }
25405
- this.pos += n;
25406
- if (this.pos >= this.token.lookAhead) this.token.lookAhead = this.pos + 1;
25407
- return this.readNext();
25408
- }
25409
- setDone() {
25410
- this.pos = this.chunkPos = this.end;
25411
- this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];
25412
- this.chunk = "";
25413
- return this.next = -1;
25414
- }
25415
- /// @internal
25416
- reset(pos, token) {
25417
- if (token) {
25418
- this.token = token;
25419
- token.start = pos;
25420
- token.lookAhead = pos + 1;
25421
- token.value = token.extended = -1;
25422
- } else {
25423
- this.token = nullToken;
25424
- }
25425
- if (this.pos != pos) {
25426
- this.pos = pos;
25427
- if (pos == this.end) {
25428
- this.setDone();
25429
- return this;
25430
- }
25431
- while (pos < this.range.from) this.range = this.ranges[--this.rangeIndex];
25432
- while (pos >= this.range.to) this.range = this.ranges[++this.rangeIndex];
25433
- if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {
25434
- this.chunkOff = pos - this.chunkPos;
25435
- } else {
25436
- this.chunk = "";
25437
- this.chunkOff = 0;
25438
- }
25439
- this.readNext();
25440
- }
25441
- return this;
25442
- }
25443
- /// @internal
25444
- read(from, to) {
25445
- if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length) return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);
25446
- if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length) return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);
25447
- if (from >= this.range.from && to <= this.range.to) return this.input.read(from, to);
25448
- let result = "";
25449
- for (let r of this.ranges) {
25450
- if (r.from >= to) break;
25451
- if (r.to > from) result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));
25452
- }
25453
- return result;
25454
- }
25455
- }
25456
- /// @internal
25457
- class TokenGroup {
25458
- constructor(data, id) {
25459
- this.data = data;
25460
- this.id = id;
25461
- }
25462
- token(input, stack) {
25463
- readToken(this.data, input, stack, this.id);
25464
- }
25465
- }
25466
- TokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;
25467
- /// `@external tokens` declarations in the grammar should resolve to
25468
- /// an instance of this class.
25469
- class ExternalTokenizer {
25470
- /// Create a tokenizer. The first argument is the function that,
25471
- /// given an input stream, scans for the types of tokens it
25472
- /// recognizes at the stream's position, and calls
25473
- /// [`acceptToken`](#lr.InputStream.acceptToken) when it finds
25474
- /// one.
25475
- constructor(
25476
- /// @internal
25477
- token, options = {}) {
25478
- this.token = token;
25479
- this.contextual = !!options.contextual;
25480
- this.fallback = !!options.fallback;
25481
- this.extend = !!options.extend;
25482
- }
25483
- }
25484
- // Tokenizer data is stored a big uint16 array containing, for each
25485
- // state:
25486
- //
25487
- // - A group bitmask, indicating what token groups are reachable from
25488
- // this state, so that paths that can only lead to tokens not in
25489
- // any of the current groups can be cut off early.
25490
- //
25491
- // - The position of the end of the state's sequence of accepting
25492
- // tokens
25493
- //
25494
- // - The number of outgoing edges for the state
25495
- //
25496
- // - The accepting tokens, as (token id, group mask) pairs
25497
- //
25498
- // - The outgoing edges, as (start character, end character, state
25499
- // index) triples, with end character being exclusive
25500
- //
25501
- // This function interprets that data, running through a stream as
25502
- // long as new states with the a matching group mask can be reached,
25503
- // and updating `input.token` when it matches a token.
25504
- function readToken(data, input, stack, group) {
25505
- let state = 0,
25506
- groupMask = 1 << group,
25507
- {
25508
- parser
25509
- } = stack.p,
25510
- {
25511
- dialect
25512
- } = parser;
25513
- scan: for (;;) {
25514
- if ((groupMask & data[state]) == 0) break;
25515
- let accEnd = data[state + 1];
25516
- // Check whether this state can lead to a token in the current group
25517
- // Accept tokens in this state, possibly overwriting
25518
- // lower-precedence / shorter tokens
25519
- for (let i = state + 3; i < accEnd; i += 2) if ((data[i + 1] & groupMask) > 0) {
25520
- let term = data[i];
25521
- if (dialect.allows(term) && (input.token.value == -1 || input.token.value == term || parser.overrides(term, input.token.value))) {
25522
- input.acceptToken(term);
25523
- break;
25524
- }
25525
- }
25526
- let next = input.next,
25527
- low = 0,
25528
- high = data[state + 2];
25529
- // Special case for EOF
25530
- if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* End */) {
25531
- state = data[accEnd + high * 3 - 1];
25532
- continue scan;
25533
- }
25534
- // Do a binary search on the state's edges
25535
- for (; low < high;) {
25536
- let mid = low + high >> 1;
25537
- let index = accEnd + mid + (mid << 1);
25538
- let from = data[index],
25539
- to = data[index + 1];
25540
- if (next < from) high = mid;else if (next >= to) low = mid + 1;else {
25541
- state = data[index + 2];
25542
- input.advance();
25543
- continue scan;
25544
- }
25545
- }
25546
- break;
25547
- }
25548
- }
25549
-
25550
- // See lezer-generator/src/encode.ts for comments about the encoding
25551
- // used here
25552
- function decodeArray(input, Type = Uint16Array) {
25553
- if (typeof input != "string") return input;
25554
- let array = null;
25555
- for (let pos = 0, out = 0; pos < input.length;) {
25556
- let value = 0;
25557
- for (;;) {
25558
- let next = input.charCodeAt(pos++),
25559
- stop = false;
25560
- if (next == 126 /* BigValCode */) {
25561
- value = 65535 /* BigVal */;
25562
- break;
25563
- }
25564
- if (next >= 92 /* Gap2 */) next--;
25565
- if (next >= 34 /* Gap1 */) next--;
25566
- let digit = next - 32 /* Start */;
25567
- if (digit >= 46 /* Base */) {
25568
- digit -= 46 /* Base */;
25569
- stop = true;
25570
- }
25571
- value += digit;
25572
- if (stop) break;
25573
- value *= 46 /* Base */;
25574
- }
25575
- if (array) array[out++] = value;else array = new Type(value);
25576
- }
25577
- return array;
25578
- }
25579
-
25580
- // Environment variable used to control console output
25581
- const verbose = typeof browser$1$1 != "undefined" && browser$1$1.env && /\bparse\b/.test(browser$1$1.env.LOG);
25582
- let stackIDs = null;
25583
- var Safety;
25584
- (function (Safety) {
25585
- Safety[Safety["Margin"] = 25] = "Margin";
25586
- })(Safety || (Safety = {}));
25587
- function cutAt(tree, pos, side) {
25588
- let cursor = tree.cursor(IterMode.IncludeAnonymous);
25589
- cursor.moveTo(pos);
25590
- for (;;) {
25591
- if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos))) for (;;) {
25592
- if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError) return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Margin */)) : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Margin */));
25593
- if (side < 0 ? cursor.prevSibling() : cursor.nextSibling()) break;
25594
- if (!cursor.parent()) return side < 0 ? 0 : tree.length;
25595
- }
25596
- }
25597
- }
25598
- class FragmentCursor {
25599
- constructor(fragments, nodeSet) {
25600
- this.fragments = fragments;
25601
- this.nodeSet = nodeSet;
25602
- this.i = 0;
25603
- this.fragment = null;
25604
- this.safeFrom = -1;
25605
- this.safeTo = -1;
25606
- this.trees = [];
25607
- this.start = [];
25608
- this.index = [];
25609
- this.nextFragment();
25610
- }
25611
- nextFragment() {
25612
- let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];
25613
- if (fr) {
25614
- this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;
25615
- this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;
25616
- while (this.trees.length) {
25617
- this.trees.pop();
25618
- this.start.pop();
25619
- this.index.pop();
25620
- }
25621
- this.trees.push(fr.tree);
25622
- this.start.push(-fr.offset);
25623
- this.index.push(0);
25624
- this.nextStart = this.safeFrom;
25625
- } else {
25626
- this.nextStart = 1e9;
25627
- }
25628
- }
25629
- // `pos` must be >= any previously given `pos` for this cursor
25630
- nodeAt(pos) {
25631
- if (pos < this.nextStart) return null;
25632
- while (this.fragment && this.safeTo <= pos) this.nextFragment();
25633
- if (!this.fragment) return null;
25634
- for (;;) {
25635
- let last = this.trees.length - 1;
25636
- if (last < 0) {
25637
- // End of tree
25638
- this.nextFragment();
25639
- return null;
25640
- }
25641
- let top = this.trees[last],
25642
- index = this.index[last];
25643
- if (index == top.children.length) {
25644
- this.trees.pop();
25645
- this.start.pop();
25646
- this.index.pop();
25647
- continue;
25648
- }
25649
- let next = top.children[index];
25650
- let start = this.start[last] + top.positions[index];
25651
- if (start > pos) {
25652
- this.nextStart = start;
25653
- return null;
25654
- }
25655
- if (next instanceof Tree) {
25656
- if (start == pos) {
25657
- if (start < this.safeFrom) return null;
25658
- let end = start + next.length;
25659
- if (end <= this.safeTo) {
25660
- let lookAhead = next.prop(NodeProp.lookAhead);
25661
- if (!lookAhead || end + lookAhead < this.fragment.to) return next;
25662
- }
25663
- }
25664
- this.index[last]++;
25665
- if (start + next.length >= Math.max(this.safeFrom, pos)) {
25666
- // Enter this node
25667
- this.trees.push(next);
25668
- this.start.push(start);
25669
- this.index.push(0);
25670
- }
25671
- } else {
25672
- this.index[last]++;
25673
- this.nextStart = start + next.length;
25674
- }
25675
- }
25676
- }
25677
- }
25678
- class TokenCache {
25679
- constructor(parser, stream) {
25680
- this.stream = stream;
25681
- this.tokens = [];
25682
- this.mainToken = null;
25683
- this.actions = [];
25684
- this.tokens = parser.tokenizers.map(_ => new CachedToken());
25685
- }
25686
- getActions(stack) {
25687
- let actionIndex = 0;
25688
- let main = null;
25689
- let {
25690
- parser
25691
- } = stack.p,
25692
- {
25693
- tokenizers
25694
- } = parser;
25695
- let mask = parser.stateSlot(stack.state, 3 /* TokenizerMask */);
25696
- let context = stack.curContext ? stack.curContext.hash : 0;
25697
- let lookAhead = 0;
25698
- for (let i = 0; i < tokenizers.length; i++) {
25699
- if ((1 << i & mask) == 0) continue;
25700
- let tokenizer = tokenizers[i],
25701
- token = this.tokens[i];
25702
- if (main && !tokenizer.fallback) continue;
25703
- if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {
25704
- this.updateCachedToken(token, tokenizer, stack);
25705
- token.mask = mask;
25706
- token.context = context;
25707
- }
25708
- if (token.lookAhead > token.end + 25 /* Margin */) lookAhead = Math.max(token.lookAhead, lookAhead);
25709
- if (token.value != 0 /* Err */) {
25710
- let startIndex = actionIndex;
25711
- if (token.extended > -1) actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);
25712
- actionIndex = this.addActions(stack, token.value, token.end, actionIndex);
25713
- if (!tokenizer.extend) {
25714
- main = token;
25715
- if (actionIndex > startIndex) break;
25716
- }
25717
- }
25718
- }
25719
- while (this.actions.length > actionIndex) this.actions.pop();
25720
- if (lookAhead) stack.setLookAhead(lookAhead);
25721
- if (!main && stack.pos == this.stream.end) {
25722
- main = new CachedToken();
25723
- main.value = stack.p.parser.eofTerm;
25724
- main.start = main.end = stack.pos;
25725
- actionIndex = this.addActions(stack, main.value, main.end, actionIndex);
25726
- }
25727
- this.mainToken = main;
25728
- return this.actions;
25729
- }
25730
- getMainToken(stack) {
25731
- if (this.mainToken) return this.mainToken;
25732
- let main = new CachedToken(),
25733
- {
25734
- pos,
25735
- p
25736
- } = stack;
25737
- main.start = pos;
25738
- main.end = Math.min(pos + 1, p.stream.end);
25739
- main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Err */;
25740
- return main;
25741
- }
25742
- updateCachedToken(token, tokenizer, stack) {
25743
- tokenizer.token(this.stream.reset(stack.pos, token), stack);
25744
- if (token.value > -1) {
25745
- let {
25746
- parser
25747
- } = stack.p;
25748
- for (let i = 0; i < parser.specialized.length; i++) if (parser.specialized[i] == token.value) {
25749
- let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);
25750
- if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {
25751
- if ((result & 1) == 0 /* Specialize */) token.value = result >> 1;else token.extended = result >> 1;
25752
- break;
25753
- }
25754
- }
25755
- } else {
25756
- token.value = 0 /* Err */;
25757
- token.end = Math.min(stack.p.stream.end, stack.pos + 1);
25758
- }
25759
- }
25760
- putAction(action, token, end, index) {
25761
- // Don't add duplicate actions
25762
- for (let i = 0; i < index; i += 3) if (this.actions[i] == action) return index;
25763
- this.actions[index++] = action;
25764
- this.actions[index++] = token;
25765
- this.actions[index++] = end;
25766
- return index;
25767
- }
25768
- addActions(stack, token, end, index) {
25769
- let {
25770
- state
25771
- } = stack,
25772
- {
25773
- parser
25774
- } = stack.p,
25775
- {
25776
- data
25777
- } = parser;
25778
- for (let set = 0; set < 2; set++) {
25779
- for (let i = parser.stateSlot(state, set ? 2 /* Skip */ : 1 /* Actions */);; i += 3) {
25780
- if (data[i] == 65535 /* End */) {
25781
- if (data[i + 1] == 1 /* Next */) {
25782
- i = pair(data, i + 2);
25783
- } else {
25784
- if (index == 0 && data[i + 1] == 2 /* Other */) index = this.putAction(pair(data, i + 2), token, end, index);
25785
- break;
25786
- }
25787
- }
25788
- if (data[i] == token) index = this.putAction(pair(data, i + 1), token, end, index);
25789
- }
25790
- }
25791
- return index;
25792
- }
25793
- }
25794
- var Rec;
25795
- (function (Rec) {
25796
- Rec[Rec["Distance"] = 5] = "Distance";
25797
- Rec[Rec["MaxRemainingPerStep"] = 3] = "MaxRemainingPerStep";
25798
- // When two stacks have been running independently long enough to
25799
- // add this many elements to their buffers, prune one.
25800
- Rec[Rec["MinBufferLengthPrune"] = 500] = "MinBufferLengthPrune";
25801
- Rec[Rec["ForceReduceLimit"] = 10] = "ForceReduceLimit";
25802
- // Once a stack reaches this depth (in .stack.length) force-reduce
25803
- // it back to CutTo to avoid creating trees that overflow the stack
25804
- // on recursive traversal.
25805
- Rec[Rec["CutDepth"] = 15000] = "CutDepth";
25806
- Rec[Rec["CutTo"] = 9000] = "CutTo";
25807
- })(Rec || (Rec = {}));
25808
- class Parse {
25809
- constructor(parser, input, fragments, ranges) {
25810
- this.parser = parser;
25811
- this.input = input;
25812
- this.ranges = ranges;
25813
- this.recovering = 0;
25814
- this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧
25815
- this.minStackPos = 0;
25816
- this.reused = [];
25817
- this.stoppedAt = null;
25818
- this.stream = new InputStream(input, ranges);
25819
- this.tokens = new TokenCache(parser, this.stream);
25820
- this.topTerm = parser.top[1];
25821
- let {
25822
- from
25823
- } = ranges[0];
25824
- this.stacks = [Stack.start(this, parser.top[0], from)];
25825
- this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4 ? new FragmentCursor(fragments, parser.nodeSet) : null;
25826
- }
25827
- get parsedPos() {
25828
- return this.minStackPos;
25829
- }
25830
- // Move the parser forward. This will process all parse stacks at
25831
- // `this.pos` and try to advance them to a further position. If no
25832
- // stack for such a position is found, it'll start error-recovery.
25833
- //
25834
- // When the parse is finished, this will return a syntax tree. When
25835
- // not, it returns `null`.
25836
- advance() {
25837
- let stacks = this.stacks,
25838
- pos = this.minStackPos;
25839
- // This will hold stacks beyond `pos`.
25840
- let newStacks = this.stacks = [];
25841
- let stopped, stoppedTokens;
25842
- // Keep advancing any stacks at `pos` until they either move
25843
- // forward or can't be advanced. Gather stacks that can't be
25844
- // advanced further in `stopped`.
25845
- for (let i = 0; i < stacks.length; i++) {
25846
- let stack = stacks[i];
25847
- for (;;) {
25848
- this.tokens.mainToken = null;
25849
- if (stack.pos > pos) {
25850
- newStacks.push(stack);
25851
- } else if (this.advanceStack(stack, newStacks, stacks)) {
25852
- continue;
25853
- } else {
25854
- if (!stopped) {
25855
- stopped = [];
25856
- stoppedTokens = [];
25857
- }
25858
- stopped.push(stack);
25859
- let tok = this.tokens.getMainToken(stack);
25860
- stoppedTokens.push(tok.value, tok.end);
25861
- }
25862
- break;
25863
- }
25864
- }
25865
- if (!newStacks.length) {
25866
- let finished = stopped && findFinished(stopped);
25867
- if (finished) return this.stackToTree(finished);
25868
- if (this.parser.strict) {
25869
- if (verbose && stopped) console.log("Stuck with token " + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : "none"));
25870
- throw new SyntaxError("No parse at " + pos);
25871
- }
25872
- if (!this.recovering) this.recovering = 5 /* Distance */;
25873
- }
25874
- if (this.recovering && stopped) {
25875
- let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0] : this.runRecovery(stopped, stoppedTokens, newStacks);
25876
- if (finished) return this.stackToTree(finished.forceAll());
25877
- }
25878
- if (this.recovering) {
25879
- let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* MaxRemainingPerStep */;
25880
- if (newStacks.length > maxRemaining) {
25881
- newStacks.sort((a, b) => b.score - a.score);
25882
- while (newStacks.length > maxRemaining) newStacks.pop();
25883
- }
25884
- if (newStacks.some(s => s.reducePos > pos)) this.recovering--;
25885
- } else if (newStacks.length > 1) {
25886
- // Prune stacks that are in the same state, or that have been
25887
- // running without splitting for a while, to avoid getting stuck
25888
- // with multiple successful stacks running endlessly on.
25889
- outer: for (let i = 0; i < newStacks.length - 1; i++) {
25890
- let stack = newStacks[i];
25891
- for (let j = i + 1; j < newStacks.length; j++) {
25892
- let other = newStacks[j];
25893
- if (stack.sameState(other) || stack.buffer.length > 500 /* MinBufferLengthPrune */ && other.buffer.length > 500 /* MinBufferLengthPrune */) {
25894
- if ((stack.score - other.score || stack.buffer.length - other.buffer.length) > 0) {
25895
- newStacks.splice(j--, 1);
25896
- } else {
25897
- newStacks.splice(i--, 1);
25898
- continue outer;
25899
- }
25900
- }
25901
- }
25902
- }
25903
- }
25904
- this.minStackPos = newStacks[0].pos;
25905
- for (let i = 1; i < newStacks.length; i++) if (newStacks[i].pos < this.minStackPos) this.minStackPos = newStacks[i].pos;
25906
- return null;
25907
- }
25908
- stopAt(pos) {
25909
- if (this.stoppedAt != null && this.stoppedAt < pos) throw new RangeError("Can't move stoppedAt forward");
25910
- this.stoppedAt = pos;
25911
- }
25912
- // Returns an updated version of the given stack, or null if the
25913
- // stack can't advance normally. When `split` and `stacks` are
25914
- // given, stacks split off by ambiguous operations will be pushed to
25915
- // `split`, or added to `stacks` if they move `pos` forward.
25916
- advanceStack(stack, stacks, split) {
25917
- let start = stack.pos,
25918
- {
25919
- parser
25920
- } = this;
25921
- let base = verbose ? this.stackID(stack) + " -> " : "";
25922
- if (this.stoppedAt != null && start > this.stoppedAt) return stack.forceReduce() ? stack : null;
25923
- if (this.fragments) {
25924
- let strictCx = stack.curContext && stack.curContext.tracker.strict,
25925
- cxHash = strictCx ? stack.curContext.hash : 0;
25926
- for (let cached = this.fragments.nodeAt(start); cached;) {
25927
- let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;
25928
- if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {
25929
- stack.useNode(cached, match);
25930
- if (verbose) console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);
25931
- return true;
25932
- }
25933
- if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0) break;
25934
- let inner = cached.children[0];
25935
- if (inner instanceof Tree && cached.positions[0] == 0) cached = inner;else break;
25936
- }
25937
- }
25938
- let defaultReduce = parser.stateSlot(stack.state, 4 /* DefaultReduce */);
25939
- if (defaultReduce > 0) {
25940
- stack.reduce(defaultReduce);
25941
- if (verbose) console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* ValueMask */)})`);
25942
- return true;
25943
- }
25944
- if (stack.stack.length >= 15000 /* CutDepth */) {
25945
- while (stack.stack.length > 9000 /* CutTo */ && stack.forceReduce()) {}
25946
- }
25947
- let actions = this.tokens.getActions(stack);
25948
- for (let i = 0; i < actions.length;) {
25949
- let action = actions[i++],
25950
- term = actions[i++],
25951
- end = actions[i++];
25952
- let last = i == actions.length || !split;
25953
- let localStack = last ? stack : stack.split();
25954
- localStack.apply(action, term, end);
25955
- if (verbose) console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* ReduceFlag */) == 0 ? "shift" : `reduce of ${parser.getName(action & 65535 /* ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? "" : ", split"})`);
25956
- if (last) return true;else if (localStack.pos > start) stacks.push(localStack);else split.push(localStack);
25957
- }
25958
- return false;
25959
- }
25960
- // Advance a given stack forward as far as it will go. Returns the
25961
- // (possibly updated) stack if it got stuck, or null if it moved
25962
- // forward and was given to `pushStackDedup`.
25963
- advanceFully(stack, newStacks) {
25964
- let pos = stack.pos;
25965
- for (;;) {
25966
- if (!this.advanceStack(stack, null, null)) return false;
25967
- if (stack.pos > pos) {
25968
- pushStackDedup(stack, newStacks);
25969
- return true;
25970
- }
25971
- }
25972
- }
25973
- runRecovery(stacks, tokens, newStacks) {
25974
- let finished = null,
25975
- restarted = false;
25976
- for (let i = 0; i < stacks.length; i++) {
25977
- let stack = stacks[i],
25978
- token = tokens[i << 1],
25979
- tokenEnd = tokens[(i << 1) + 1];
25980
- let base = verbose ? this.stackID(stack) + " -> " : "";
25981
- if (stack.deadEnd) {
25982
- if (restarted) continue;
25983
- restarted = true;
25984
- stack.restart();
25985
- if (verbose) console.log(base + this.stackID(stack) + " (restarted)");
25986
- let done = this.advanceFully(stack, newStacks);
25987
- if (done) continue;
25988
- }
25989
- let force = stack.split(),
25990
- forceBase = base;
25991
- for (let j = 0; force.forceReduce() && j < 10 /* ForceReduceLimit */; j++) {
25992
- if (verbose) console.log(forceBase + this.stackID(force) + " (via force-reduce)");
25993
- let done = this.advanceFully(force, newStacks);
25994
- if (done) break;
25995
- if (verbose) forceBase = this.stackID(force) + " -> ";
25996
- }
25997
- for (let insert of stack.recoverByInsert(token)) {
25998
- if (verbose) console.log(base + this.stackID(insert) + " (via recover-insert)");
25999
- this.advanceFully(insert, newStacks);
26000
- }
26001
- if (this.stream.end > stack.pos) {
26002
- if (tokenEnd == stack.pos) {
26003
- tokenEnd++;
26004
- token = 0 /* Err */;
26005
- }
26006
- stack.recoverByDelete(token, tokenEnd);
26007
- if (verbose) console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);
26008
- pushStackDedup(stack, newStacks);
26009
- } else if (!finished || finished.score < stack.score) {
26010
- finished = stack;
26011
- }
26012
- }
26013
- return finished;
26014
- }
26015
- // Convert the stack's buffer to a syntax tree.
26016
- stackToTree(stack) {
26017
- stack.close();
26018
- return Tree.build({
26019
- buffer: StackBufferCursor.create(stack),
26020
- nodeSet: this.parser.nodeSet,
26021
- topID: this.topTerm,
26022
- maxBufferLength: this.parser.bufferLength,
26023
- reused: this.reused,
26024
- start: this.ranges[0].from,
26025
- length: stack.pos - this.ranges[0].from,
26026
- minRepeatType: this.parser.minRepeatTerm
26027
- });
26028
- }
26029
- stackID(stack) {
26030
- let id = (stackIDs || (stackIDs = new WeakMap())).get(stack);
26031
- if (!id) stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));
26032
- return id + stack;
26033
- }
26034
- }
26035
- function pushStackDedup(stack, newStacks) {
26036
- for (let i = 0; i < newStacks.length; i++) {
26037
- let other = newStacks[i];
26038
- if (other.pos == stack.pos && other.sameState(stack)) {
26039
- if (newStacks[i].score < stack.score) newStacks[i] = stack;
26040
- return;
26041
- }
26042
- }
26043
- newStacks.push(stack);
26044
- }
26045
- class Dialect {
26046
- constructor(source, flags, disabled) {
26047
- this.source = source;
26048
- this.flags = flags;
26049
- this.disabled = disabled;
26050
- }
26051
- allows(term) {
26052
- return !this.disabled || this.disabled[term] == 0;
26053
- }
26054
- }
26055
- /// Holds the parse tables for a given grammar, as generated by
26056
- /// `lezer-generator`, and provides [methods](#common.Parser) to parse
26057
- /// content with.
26058
- class LRParser extends Parser {
26059
- /// @internal
26060
- constructor(spec) {
26061
- super();
26062
- /// @internal
26063
- this.wrappers = [];
26064
- if (spec.version != 14 /* Version */) throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* Version */})`);
26065
- let nodeNames = spec.nodeNames.split(" ");
26066
- this.minRepeatTerm = nodeNames.length;
26067
- for (let i = 0; i < spec.repeatNodeCount; i++) nodeNames.push("");
26068
- let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);
26069
- let nodeProps = [];
26070
- for (let i = 0; i < nodeNames.length; i++) nodeProps.push([]);
26071
- function setProp(nodeID, prop, value) {
26072
- nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);
26073
- }
26074
- if (spec.nodeProps) for (let propSpec of spec.nodeProps) {
26075
- let prop = propSpec[0];
26076
- if (typeof prop == "string") prop = NodeProp[prop];
26077
- for (let i = 1; i < propSpec.length;) {
26078
- let next = propSpec[i++];
26079
- if (next >= 0) {
26080
- setProp(next, prop, propSpec[i++]);
26081
- } else {
26082
- let value = propSpec[i + -next];
26083
- for (let j = -next; j > 0; j--) setProp(propSpec[i++], prop, value);
26084
- i++;
26085
- }
26086
- }
26087
- }
26088
- this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({
26089
- name: i >= this.minRepeatTerm ? undefined : name,
26090
- id: i,
26091
- props: nodeProps[i],
26092
- top: topTerms.indexOf(i) > -1,
26093
- error: i == 0,
26094
- skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1
26095
- })));
26096
- if (spec.propSources) this.nodeSet = this.nodeSet.extend(...spec.propSources);
26097
- this.strict = false;
26098
- this.bufferLength = DefaultBufferLength;
26099
- let tokenArray = decodeArray(spec.tokenData);
26100
- this.context = spec.context;
26101
- this.specialized = new Uint16Array(spec.specialized ? spec.specialized.length : 0);
26102
- this.specializers = [];
26103
- if (spec.specialized) for (let i = 0; i < spec.specialized.length; i++) {
26104
- this.specialized[i] = spec.specialized[i].term;
26105
- this.specializers[i] = spec.specialized[i].get;
26106
- }
26107
- this.states = decodeArray(spec.states, Uint32Array);
26108
- this.data = decodeArray(spec.stateData);
26109
- this.goto = decodeArray(spec.goto);
26110
- this.maxTerm = spec.maxTerm;
26111
- this.tokenizers = spec.tokenizers.map(value => typeof value == "number" ? new TokenGroup(tokenArray, value) : value);
26112
- this.topRules = spec.topRules;
26113
- this.dialects = spec.dialects || {};
26114
- this.dynamicPrecedences = spec.dynamicPrecedences || null;
26115
- this.tokenPrecTable = spec.tokenPrec;
26116
- this.termNames = spec.termNames || null;
26117
- this.maxNode = this.nodeSet.types.length - 1;
26118
- this.dialect = this.parseDialect();
26119
- this.top = this.topRules[Object.keys(this.topRules)[0]];
26120
- }
26121
- createParse(input, fragments, ranges) {
26122
- let parse = new Parse(this, input, fragments, ranges);
26123
- for (let w of this.wrappers) parse = w(parse, input, fragments, ranges);
26124
- return parse;
26125
- }
26126
- /// Get a goto table entry @internal
26127
- getGoto(state, term, loose = false) {
26128
- let table = this.goto;
26129
- if (term >= table[0]) return -1;
26130
- for (let pos = table[term + 1];;) {
26131
- let groupTag = table[pos++],
26132
- last = groupTag & 1;
26133
- let target = table[pos++];
26134
- if (last && loose) return target;
26135
- for (let end = pos + (groupTag >> 1); pos < end; pos++) if (table[pos] == state) return target;
26136
- if (last) return -1;
26137
- }
26138
- }
26139
- /// Check if this state has an action for a given terminal @internal
26140
- hasAction(state, terminal) {
26141
- let data = this.data;
26142
- for (let set = 0; set < 2; set++) {
26143
- for (let i = this.stateSlot(state, set ? 2 /* Skip */ : 1 /* Actions */), next;; i += 3) {
26144
- if ((next = data[i]) == 65535 /* End */) {
26145
- if (data[i + 1] == 1 /* Next */) next = data[i = pair(data, i + 2)];else if (data[i + 1] == 2 /* Other */) return pair(data, i + 2);else break;
26146
- }
26147
- if (next == terminal || next == 0 /* Err */) return pair(data, i + 1);
26148
- }
26149
- }
26150
- return 0;
26151
- }
26152
- /// @internal
26153
- stateSlot(state, slot) {
26154
- return this.states[state * 6 /* Size */ + slot];
26155
- }
26156
- /// @internal
26157
- stateFlag(state, flag) {
26158
- return (this.stateSlot(state, 0 /* Flags */) & flag) > 0;
26159
- }
26160
- /// @internal
26161
- validAction(state, action) {
26162
- if (action == this.stateSlot(state, 4 /* DefaultReduce */)) return true;
26163
- for (let i = this.stateSlot(state, 1 /* Actions */);; i += 3) {
26164
- if (this.data[i] == 65535 /* End */) {
26165
- if (this.data[i + 1] == 1 /* Next */) i = pair(this.data, i + 2);else return false;
26166
- }
26167
- if (action == pair(this.data, i + 1)) return true;
26168
- }
26169
- }
26170
- /// Get the states that can follow this one through shift actions or
26171
- /// goto jumps. @internal
26172
- nextStates(state) {
26173
- let result = [];
26174
- for (let i = this.stateSlot(state, 1 /* Actions */);; i += 3) {
26175
- if (this.data[i] == 65535 /* End */) {
26176
- if (this.data[i + 1] == 1 /* Next */) i = pair(this.data, i + 2);else break;
26177
- }
26178
- if ((this.data[i + 2] & 65536 /* ReduceFlag */ >> 16) == 0) {
26179
- let value = this.data[i + 1];
26180
- if (!result.some((v, i) => i & 1 && v == value)) result.push(this.data[i], value);
26181
- }
26182
- }
26183
- return result;
26184
- }
26185
- /// @internal
26186
- overrides(token, prev) {
26187
- let iPrev = findOffset(this.data, this.tokenPrecTable, prev);
26188
- return iPrev < 0 || findOffset(this.data, this.tokenPrecTable, token) < iPrev;
26189
- }
26190
- /// Configure the parser. Returns a new parser instance that has the
26191
- /// given settings modified. Settings not provided in `config` are
26192
- /// kept from the original parser.
26193
- configure(config) {
26194
- // Hideous reflection-based kludge to make it easy to create a
26195
- // slightly modified copy of a parser.
26196
- let copy = Object.assign(Object.create(LRParser.prototype), this);
26197
- if (config.props) copy.nodeSet = this.nodeSet.extend(...config.props);
26198
- if (config.top) {
26199
- let info = this.topRules[config.top];
26200
- if (!info) throw new RangeError(`Invalid top rule name ${config.top}`);
26201
- copy.top = info;
26202
- }
26203
- if (config.tokenizers) copy.tokenizers = this.tokenizers.map(t => {
26204
- let found = config.tokenizers.find(r => r.from == t);
26205
- return found ? found.to : t;
26206
- });
26207
- if (config.contextTracker) copy.context = config.contextTracker;
26208
- if (config.dialect) copy.dialect = this.parseDialect(config.dialect);
26209
- if (config.strict != null) copy.strict = config.strict;
26210
- if (config.wrap) copy.wrappers = copy.wrappers.concat(config.wrap);
26211
- if (config.bufferLength != null) copy.bufferLength = config.bufferLength;
26212
- return copy;
26213
- }
26214
- /// Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)
26215
- /// are registered for this parser.
26216
- hasWrappers() {
26217
- return this.wrappers.length > 0;
26218
- }
26219
- /// Returns the name associated with a given term. This will only
26220
- /// work for all terms when the parser was generated with the
26221
- /// `--names` option. By default, only the names of tagged terms are
26222
- /// stored.
26223
- getName(term) {
26224
- return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);
26225
- }
26226
- /// The eof term id is always allocated directly after the node
26227
- /// types. @internal
26228
- get eofTerm() {
26229
- return this.maxNode + 1;
26230
- }
26231
- /// The type of top node produced by the parser.
26232
- get topNode() {
26233
- return this.nodeSet.types[this.top[1]];
26234
- }
26235
- /// @internal
26236
- dynamicPrecedence(term) {
26237
- let prec = this.dynamicPrecedences;
26238
- return prec == null ? 0 : prec[term] || 0;
26239
- }
26240
- /// @internal
26241
- parseDialect(dialect) {
26242
- let values = Object.keys(this.dialects),
26243
- flags = values.map(() => false);
26244
- if (dialect) for (let part of dialect.split(" ")) {
26245
- let id = values.indexOf(part);
26246
- if (id >= 0) flags[id] = true;
26247
- }
26248
- let disabled = null;
26249
- for (let i = 0; i < values.length; i++) if (!flags[i]) {
26250
- for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* End */;) (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;
26251
- }
26252
- return new Dialect(dialect, flags, disabled);
26253
- }
26254
- /// (used by the output of the parser generator) @internal
26255
- static deserialize(spec) {
26256
- return new LRParser(spec);
26257
- }
26258
- }
26259
- function pair(data, off) {
26260
- return data[off] | data[off + 1] << 16;
26261
- }
26262
- function findOffset(data, start, term) {
26263
- for (let i = start, next; (next = data[i]) != 65535 /* End */; i++) if (next == term) return i - start;
26264
- return -1;
26265
- }
26266
- function findFinished(stacks) {
26267
- let best = null;
26268
- for (let stack of stacks) {
26269
- let stopped = stack.p.stoppedAt;
26270
- if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) && stack.p.parser.stateFlag(stack.state, 2 /* Accepting */) && (!best || best.score < stack.score)) best = stack;
26271
- }
26272
- return best;
26273
- }
26274
-
26275
- // This file was generated by lezer-generator. You probably shouldn't edit it.
26276
- const RawString = 1,
26277
- templateArgsEndFallback = 2,
26278
- MacroName = 3;
26279
- const R$1 = 82,
26280
- L$1 = 76,
26281
- u = 117,
26282
- U$1 = 85,
26283
- a = 97,
26284
- z$1 = 122,
26285
- A = 65,
26286
- Z = 90,
26287
- Underscore = 95,
26288
- Zero = 48,
26289
- Quote = 34,
26290
- ParenL = 40,
26291
- ParenR = 41,
26292
- Space = 32,
26293
- GreaterThan = 62;
26294
- const rawString = new ExternalTokenizer(input => {
26295
- // Raw string literals can start with: R, LR, uR, UR, u8R
26296
- if (input.next == L$1 || input.next == U$1) {
26297
- input.advance();
26298
- } else if (input.next == u) {
26299
- input.advance();
26300
- if (input.next == Zero + 8) input.advance();
26301
- }
26302
- if (input.next != R$1) return;
26303
- input.advance();
26304
- if (input.next != Quote) return;
26305
- input.advance();
26306
- let marker = "";
26307
- while (input.next != ParenL) {
26308
- if (input.next == Space || input.next <= 13 || input.next == ParenR) return;
26309
- marker += String.fromCharCode(input.next);
26310
- input.advance();
26311
- }
26312
- input.advance();
26313
- for (;;) {
26314
- if (input.next < 0) return input.acceptToken(RawString);
26315
- if (input.next == ParenR) {
26316
- let match = true;
26317
- for (let i = 0; match && i < marker.length; i++) if (input.peek(i + 1) != marker.charCodeAt(i)) match = false;
26318
- if (match && input.peek(marker.length + 1) == Quote) return input.acceptToken(RawString, 2 + marker.length);
26319
- }
26320
- input.advance();
26321
- }
26322
- });
26323
- const fallback = new ExternalTokenizer(input => {
26324
- if (input.next == GreaterThan) {
26325
- // Provide a template-args-closing token when the next characters
26326
- // are ">>", in which case the regular tokenizer will only see a
26327
- // bit shift op.
26328
- if (input.peek(1) == GreaterThan) input.acceptToken(templateArgsEndFallback, 1);
26329
- } else {
26330
- // Notice all-uppercase identifiers
26331
- let sawLetter = false,
26332
- i = 0;
26333
- for (;; i++) {
26334
- if (input.next >= A && input.next <= Z) sawLetter = true;else if (input.next >= a && input.next <= z$1) return;else if (input.next != Underscore && !(input.next >= Zero && input.next <= Zero + 9)) break;
26335
- input.advance();
26336
- }
26337
- if (sawLetter && i > 1) input.acceptToken(MacroName);
26338
- }
26339
- }, {
26340
- extend: true
26341
- });
26342
- const cppHighlighting = styleTags({
26343
- "typedef struct union enum class typename decltype auto template operator friend noexcept namespace using requires concept import export module __attribute__ __declspec __based": tags.definitionKeyword,
26344
- "extern MsCallModifier MsPointerModifier extern static register thread_local inline const volatile restrict _Atomic mutable constexpr constinit consteval virtual explicit VirtualSpecifier Access": tags.modifier,
26345
- "if else switch for while do case default return break continue goto throw try catch": tags.controlKeyword,
26346
- "co_return co_yield co_await": tags.controlKeyword,
26347
- "new sizeof delete static_assert": tags.operatorKeyword,
26348
- "NULL nullptr": tags.null,
26349
- this: tags.self,
26350
- "True False": tags.bool,
26351
- "TypeSize PrimitiveType": tags.standard(tags.typeName),
26352
- TypeIdentifier: tags.typeName,
26353
- FieldIdentifier: tags.propertyName,
26354
- "CallExpression/FieldExpression/FieldIdentifier": tags.function(tags.propertyName),
26355
- "ModuleName/Identifier": tags.namespace,
26356
- "PartitionName": tags.labelName,
26357
- StatementIdentifier: tags.labelName,
26358
- "Identifier DestructorName": tags.variableName,
26359
- "CallExpression/Identifier": tags.function(tags.variableName),
26360
- "CallExpression/ScopedIdentifier/Identifier": tags.function(tags.variableName),
26361
- "FunctionDeclarator/Identifier FunctionDeclarator/DestructorName": tags.function(tags.definition(tags.variableName)),
26362
- NamespaceIdentifier: tags.namespace,
26363
- OperatorName: tags.operator,
26364
- ArithOp: tags.arithmeticOperator,
26365
- LogicOp: tags.logicOperator,
26366
- BitOp: tags.bitwiseOperator,
26367
- CompareOp: tags.compareOperator,
26368
- AssignOp: tags.definitionOperator,
26369
- UpdateOp: tags.updateOperator,
26370
- LineComment: tags.lineComment,
26371
- BlockComment: tags.blockComment,
26372
- Number: tags.number,
26373
- String: tags.string,
26374
- "RawString SystemLibString": tags.special(tags.string),
26375
- CharLiteral: tags.character,
26376
- EscapeSequence: tags.escape,
26377
- "UserDefinedLiteral/Identifier": tags.literal,
26378
- PreProcArg: tags.meta,
26379
- "PreprocDirectiveName #include #ifdef #ifndef #if #define #else #endif #elif": tags.processingInstruction,
26380
- MacroName: tags.special(tags.name),
26381
- "( )": tags.paren,
26382
- "[ ]": tags.squareBracket,
26383
- "{ }": tags.brace,
26384
- "< >": tags.angleBracket,
26385
- ". ->": tags.derefOperator,
26386
- ", ;": tags.separator
26387
- });
26388
-
26389
- // This file was generated by lezer-generator. You probably shouldn't edit it.
26390
- const spec_identifier = {
26391
- __proto__: null,
26392
- bool: 36,
26393
- char: 36,
26394
- int: 36,
26395
- float: 36,
26396
- double: 36,
26397
- void: 36,
26398
- size_t: 36,
26399
- ssize_t: 36,
26400
- intptr_t: 36,
26401
- uintptr_t: 36,
26402
- charptr_t: 36,
26403
- int8_t: 36,
26404
- int16_t: 36,
26405
- int32_t: 36,
26406
- int64_t: 36,
26407
- uint8_t: 36,
26408
- uint16_t: 36,
26409
- uint32_t: 36,
26410
- uint64_t: 36,
26411
- char8_t: 36,
26412
- char16_t: 36,
26413
- char32_t: 36,
26414
- char64_t: 36,
26415
- const: 70,
26416
- volatile: 72,
26417
- restrict: 74,
26418
- _Atomic: 76,
26419
- mutable: 78,
26420
- constexpr: 80,
26421
- constinit: 82,
26422
- consteval: 84,
26423
- struct: 88,
26424
- __declspec: 92,
26425
- final: 148,
26426
- override: 148,
26427
- public: 152,
26428
- private: 152,
26429
- protected: 152,
26430
- virtual: 154,
26431
- extern: 160,
26432
- static: 162,
26433
- register: 164,
26434
- inline: 166,
26435
- thread_local: 168,
26436
- __attribute__: 172,
26437
- __based: 178,
26438
- __restrict: 180,
26439
- __uptr: 180,
26440
- __sptr: 180,
26441
- _unaligned: 180,
26442
- __unaligned: 180,
26443
- noexcept: 194,
26444
- requires: 198,
26445
- TRUE: 784,
26446
- true: 784,
26447
- FALSE: 786,
26448
- false: 786,
26449
- typename: 218,
26450
- class: 220,
26451
- template: 234,
26452
- throw: 248,
26453
- __cdecl: 256,
26454
- __clrcall: 256,
26455
- __stdcall: 256,
26456
- __fastcall: 256,
26457
- __thiscall: 256,
26458
- __vectorcall: 256,
26459
- try: 260,
26460
- catch: 264,
26461
- export: 282,
26462
- import: 286,
26463
- case: 296,
26464
- default: 298,
26465
- if: 308,
26466
- else: 314,
26467
- switch: 318,
26468
- do: 322,
26469
- while: 324,
26470
- for: 330,
26471
- return: 334,
26472
- break: 338,
26473
- continue: 342,
26474
- goto: 346,
26475
- co_return: 350,
26476
- co_yield: 354,
26477
- using: 362,
26478
- typedef: 366,
26479
- namespace: 380,
26480
- new: 398,
26481
- delete: 400,
26482
- co_await: 402,
26483
- concept: 406,
26484
- enum: 410,
26485
- static_assert: 414,
26486
- friend: 422,
26487
- union: 424,
26488
- explicit: 430,
26489
- operator: 444,
26490
- module: 456,
26491
- signed: 518,
26492
- unsigned: 518,
26493
- long: 518,
26494
- short: 518,
26495
- decltype: 528,
26496
- auto: 530,
26497
- sizeof: 566,
26498
- NULL: 572,
26499
- nullptr: 586,
26500
- this: 588
26501
- };
26502
- const spec_ = {
26503
- __proto__: null,
26504
- "<": 131
26505
- };
26506
- const spec_templateArgsEnd = {
26507
- __proto__: null,
26508
- ">": 135
26509
- };
26510
- const spec_scopedIdentifier = {
26511
- __proto__: null,
26512
- operator: 388,
26513
- new: 576,
26514
- delete: 582
26515
- };
26516
- const parser = LRParser.deserialize({
26517
- version: 14,
26518
- states: "$:|Q!QQVOOP'gOUOOO(XOWO'#CdO,RQUO'#CgO,]QUO'#FjO-sQbO'#CxO.UQUO'#CxO0TQUO'#KZO0[QUO'#CwO0gOpO'#DvO0oQ!dO'#D]OOQR'#JO'#JOO5XQVO'#GUO5fQUO'#JVOOQQ'#JV'#JVO8zQUO'#KmO<eQUO'#KmO>{QVO'#E^O?]QUO'#E^OOQQ'#Ed'#EdOOQQ'#Ee'#EeO?bQVO'#EfO@XQVO'#EiOBUQUO'#FPOBvQUO'#FhOOQR'#Fj'#FjOB{QUO'#FjOOQR'#LQ'#LQOOQR'#LP'#LPOETQVO'#KQOFxQUO'#LVOGVQUO'#KqOGkQUO'#LVOH]QUO'#LXOOQR'#HU'#HUOOQR'#HV'#HVOOQR'#HW'#HWOOQR'#K|'#K|OOQR'#J_'#J_Q!QQVOOOHkQVO'#FOOIWQUO'#EhOI_QUOOOKZQVO'#HgOKkQUO'#HgONVQUO'#KqONaQUO'#KqOOQQ'#Kq'#KqO!!_QUO'#KqOOQQ'#Jq'#JqO!!lQUO'#HxOOQQ'#KZ'#KZO!&^QUO'#KZO!&zQUO'#KQO!(zQVO'#I]O!(zQVO'#I`OCQQUO'#KQOOQQ'#Ip'#IpOOQQ'#KQ'#KQO!,}QUO'#KZOOQR'#KY'#KYO!-UQUO'#DZO!/mQUO'#KnOOQQ'#Kn'#KnO!/tQUO'#KnO!/{QUO'#ETO!0QQUO'#EWO!0VQUO'#FRO8zQUO'#FPO!QQVO'#F^O!0[Q#vO'#F`O!0gQUO'#FkO!0oQUO'#FpO!0tQVO'#FrO!0oQUO'#FuO!3sQUO'#FvO!3xQVO'#FxO!4SQUO'#FzO!4XQUO'#F|O!4^QUO'#GOO!4cQVO'#GQO!(zQVO'#GSO!4jQUO'#GpO!4xQUO'#GYO!(zQVO'#FeO!6VQUO'#FeO!6[QVO'#G`O!6cQUO'#GaO!6nQUO'#GnO!6sQUO'#GrO!6xQUO'#GzO!7jQ&lO'#HiO!:mQUO'#GuO!:}QUO'#HXO!;YQUO'#HZO!;bQUO'#DXO!;bQUO'#HuO!;bQUO'#HvO!;yQUO'#HwO!<[QUO'#H|O!=PQUO'#H}O!>uQVO'#IbO!(zQVO'#IdO!?PQUO'#IgO!?WQVO'#IjP!@}{,UO'#CbP!6n{,UO'#CbP!AY{7[O'#CbP!6n{,UO'#CbP!A_{,UO'#CbP!AjOSO'#IzPOOO)CEn)CEnOOOO'#I|'#I|O!AtOWO,59OOOQR,59O,59OO!(zQVO,59VOOQQ,59X,59XO!(zQVO,5;ROOQR,5<U,5<UO!BPQUO,59ZO!(zQVO,5>qOOQR'#IX'#IXOOQR'#IY'#IYOOQR'#IZ'#IZOOQR'#I['#I[O!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!DOQVO,5>zOOQQ,5?W,5?WO!EqQVO'#CjO!IjQUO'#CzOOQQ,59d,59dOOQQ,59c,59cOOQQ,5<},5<}O!IwQ&lO,5=mO!?PQUO,5?RO!LkQVO,5?UO!LrQbO,59dO!L}QVO'#FYOOQQ,5?P,5?PO!M_QVO,59WO!MfO`O,5:bO!MkQbO'#D^O!M|QbO'#K_O!N[QbO,59wO!NdQbO'#CxO!NuQUO'#CxO!NzQUO'#KZO# UQUO'#CwOOQR-E<|-E<|O# aQUO,5AoO# hQVO'#EfO@XQVO'#EiOBUQUO,5;kOOQR,5<p,5<pO#$aQUO'#KQO#$hQUO'#KQO!(zQVO'#IUO8zQUO,5;kO#${Q&lO'#HiO#(SQUO'#CtO#*wQbO'#CxO#*|QUO'#CwO#.jQUO'#KZOOQQ-E=T-E=TO#0}QUO,5AXO#1XQUO'#KZO#1cQUO,5AXOOQR,5Ao,5AoOOQQ,5>l,5>lO#3gQUO'#CgO#4]QUO,5>pO#6OQUO'#IeOOQR'#I}'#I}O#6WQUO,5:xO#6tQUO,5:xO#7eQUO,5:xO#8YQUO'#CuO!0QQUO'#CmOOQQ'#JW'#JWO#6tQUO,5:xO#8bQUO,5;QO!4xQUO'#DOO#9kQUO,5;QO#9pQUO,5>QO#:|QUO'#DOO#;dQUO,5>{O#;iQUO'#KwO#<rQUO,5;TO#<zQVO,5;TO#=UQUO,5;TOOQQ,5;T,5;TO#>}QUO'#L[O#?UQUO,5>UO#?ZQbO'#CxO#?fQUO'#GcO#?kQUO'#E^O#@[QUO,5;kO#@sQUO'#K}O#@{QUO,5;rOKkQUO'#HfOBUQUO'#HgO#AQQUO'#KqO!6nQUO'#HjO#AxQUO'#CuO!0tQVO,5<SOOQQ'#Cg'#CgOOQR'#Jh'#JhO#A}QVO,5=`OOQQ,5?Z,5?ZO#DWQbO'#CxO#DcQUO'#GcOOQQ'#Ji'#JiOOQQ-E=g-E=gOGVQUO,5AqOGkQUO,5AqO#DhQUO,5AsO#DsQUO'#G|OOQR,5Aq,5AqO#DhQUO,5AqO#EOQUO'#HOO#EWQUO,5AsOOQR,5As,5AsOOQR,5At,5AtO#EfQVO,5AtOOQR-E=]-E=]O#G`QVO,5;jOOQR,5;j,5;jO#IaQUO'#EjO#JfQUO'#EwO#K]QVO'#ExO#MoQUO'#EvO#MwQUO'#EyO#NvQUO'#EzOOQQ'#Kz'#KzO$ mQUO,5;SO$!sQUO'#EvOOQQ,5;S,5;SO$#pQUO,5;SO$%cQUO,5:yO$'|QVO,5>PO$(WQUO'#E[O$(eQUO,5>ROOQQ,5>S,5>SO$,RQVO'#C|OOQQ-E=o-E=oOOQQ,5>d,5>dOOQQ,59a,59aO$,]QUO,5>wO$.]QUO,5>zO!6nQUO,59uO$.pQUO,5;qO$.}QUO,5<{O!0QQUO,5:oOOQQ,5:r,5:rO$/YQUO,5;mO$/_QUO'#KmOBUQUO,5;kOOQR,5;x,5;xO$0OQUO'#FbO$0^QUO'#FbO$0cQUO,5;zO$3|QVO'#FmO!0tQVO,5<VO!0oQUO,5<VO!0VQUO,5<[O$4TQVO'#GUO$7PQUO,5<^O!0tQVO,5<aO$:gQVO,5<bO$:tQUO,5<dOOQR,5<d,5<dO$;}QUO,5<dOOQR,5<f,5<fOOQR,5<h,5<hOOQQ'#Fi'#FiO$<SQUO,5<jO$<XQUO,5<lOOQR,5<l,5<lO$=_QUO,5<nO$>eQUO,5<rO$>pQUO,5=[O$>uQUO,5=[O!4xQUO,5<tO$>}QUO,5<tO$?cQUO,5<PO$@iQVO,5<PO$BzQUO,5<zOOQR,5<z,5<zOOQR,5<{,5<{O$>uQUO,5<{O$DQQUO,5<{O$D]QUO,5=YO!(zQVO,5=^O!(zQVO,5=fO#NeQUO,5=mOOQQ,5>T,5>TO$FbQUO,5>TO$FlQUO,5>TO$FqQUO,5>TO$FvQUO,5>TO!6nQUO,5>TO$HtQUO'#KZO$H{QUO,5=oO$IWQUO,5=aOKkQUO,5=oO$JQQUO,5=sOOQR,5=s,5=sO$JYQUO,5=sO$LeQVO'#H[OOQQ,5=u,5=uO!;]QUO,5=uO%#`QUO'#KjO%#gQUO'#K[O%#{QUO'#KjO%$VQUO'#DyO%$hQUO'#D|O%'eQUO'#K[OOQQ'#K['#K[O%)WQUO'#K[O%#gQUO'#K[O%)]QUO'#K[OOQQ,59s,59sOOQQ,5>a,5>aOOQQ,5>b,5>bO%)eQUO'#HzO%)mQUO,5>cOOQQ,5>c,5>cO%-XQUO,5>cO%-dQUO,5>hO%1OQVO,5>iO%1VQUO,5>|O# hQVO'#EfO%4]QUO,5>|OOQQ,5>|,5>|O%4|QUO,5?OO%7QQUO,5?RO!<[QUO,5?RO%8|QUO,5?UO%<iQVO,5?UP!A_{,UO,58|P%<p{,UO,58|P%=O{7[O,58|P%=U{,UO,58|PO{O'#Ju'#JuP%=Z{,UO'#LcPOOO'#Lc'#LcP%=a{,UO'#LcPOOO,58|,58|POOO,5?f,5?fP%=fOSO,5?fOOOO-E<z-E<zOOQR1G.j1G.jO%=mQUO1G.qO%>sQUO1G0mOOQQ1G0m1G0mO%@PQUO'#CpO%B`QbO'#CxO%BkQUO'#CsO%BpQUO'#CsO%BuQUO1G.uO#AxQUO'#CrOOQQ1G.u1G.uO%DxQUO1G4]O%FOQUO1G4^O%GqQUO1G4^O%IdQUO1G4^O%KVQUO1G4^O%LxQUO1G4^O%NkQUO1G4^O&!^QUO1G4^O&$PQUO1G4^O&%rQUO1G4^O&'eQUO1G4^O&)WQUO1G4^O&*yQUO'#KPO&,SQUO'#KPO&,[QUO,59UOOQQ,5=P,5=PO&.dQUO,5=PO&.nQUO,5=PO&.sQUO,5=PO&.xQUO,5=PO!6nQUO,5=PO#NeQUO1G3XO&/SQUO1G4mO!<[QUO1G4mO&1OQUO1G4pO&2qQVO1G4pOOQQ1G/O1G/OOOQQ1G.}1G.}OOQQ1G2i1G2iO!IwQ&lO1G3XO&2xQUO'#LOO@XQVO'#EiO&4RQUO'#F]OOQQ'#Ja'#JaO&4WQUO'#FZO&4cQUO'#LOO&4kQUO,5;tO&4pQUO1G.rOOQQ1G.r1G.rOOQR1G/|1G/|O&6cQ!dO'#JPO&6hQbO,59xO&8yQ!eO'#D`O&9QQ!dO'#JRO&9VQbO,5@yO&9VQbO,5@yOOQR1G/c1G/cO&9bQbO1G/cO&9gQ&lO'#GeO&:eQbO,59dOOQR1G7Z1G7ZO#@[QUO1G1VO&:pQUO1G1^OBUQUO1G1VO&=RQUO'#CzO#*wQbO,59dO&@tQUO1G6sOOQR-E<{-E<{O&BWQUO1G0dO#6WQUO1G0dOOQQ-E=U-E=UO#6tQUO1G0dOOQQ1G0l1G0lO&B{QUO,59jOOQQ1G3l1G3lO&CcQUO,59jO&CyQUO,59jO!M_QVO1G4gO!(zQVO'#JYO&DeQUO,5AcOOQQ1G0o1G0oO!(zQVO1G0oO!6nQUO'#JnO&DmQUO,5AvOOQQ1G3p1G3pOOQR1G1V1G1VO&HjQVO'#FOO!M_QVO,5;sOOQQ,5;s,5;sOBUQUO'#JcO&JfQUO,5AiO&JnQVO'#E[OOQR1G1^1G1^O&M]QUO'#L[OOQR1G1n1G1nOOQR-E=f-E=fOOQR1G7]1G7]O#DhQUO1G7]OGVQUO1G7]O#DhQUO1G7_OOQR1G7_1G7_O&MeQUO'#G}O&MmQUO'#LWOOQQ,5=h,5=hO&M{QUO,5=jO&NQQUO,5=kOOQR1G7`1G7`O#EfQVO1G7`O&NVQUO1G7`O' ]QVO,5=kOOQR1G1U1G1UO$.vQUO'#E]O'!RQUO'#E]OOQQ'#Ky'#KyO'!lQUO'#KxO'!wQUO,5;UO'#PQUO'#ElO'#dQUO'#ElO'#wQUO'#EtOOQQ'#J['#J[O'#|QUO,5;cO'$sQUO,5;cO'%nQUO,5;dO'&tQVO,5;dOOQQ,5;d,5;dO''OQVO,5;dO'&tQVO,5;dO''VQUO,5;bO'(SQUO,5;eO'(_QUO'#KpO'(gQUO,5:vO'(lQUO,5;fOOQQ1G0n1G0nOOQQ'#J]'#J]O''VQUO,5;bO!4xQUO'#E}OOQQ,5;b,5;bO')gQUO'#E`O'+aQUO'#E{OHrQUO1G0nO'+fQUO'#EbOOQQ'#JX'#JXO'-OQUO'#KrOOQQ'#Kr'#KrO'-xQUO1G0eO'.pQUO1G3kO'/vQVO1G3kOOQQ1G3k1G3kO'0QQVO1G3kO'0XQUO'#L_O'1eQUO'#KXO'1sQUO'#KWO'2OQUO,59hO'2WQUO1G/aO'2]QUO'#FPOOQR1G1]1G1]OOQR1G2g1G2gO$>uQUO1G2gO'2gQUO1G2gO'2rQUO1G0ZOOQR'#J`'#J`O'2wQVO1G1XO'8pQUO'#FTO'8uQUO1G1VO!6nQUO'#JdO'9TQUO,5;|O$0^QUO,5;|OOQQ'#Fc'#FcOOQQ,5;|,5;|O'9cQUO1G1fOOQR1G1f1G1fO'9kQUO,5<XO$.vQUO'#FWOBUQUO'#FWO'9rQUO,5<XO!(zQVO,5<XO'9zQUO,5<XO':PQVO1G1qO!0tQVO1G1qOOQR1G1v1G1vO'?oQUO1G1xOOQR1G1{1G1{O'?tQUO1G1|OBUQUO1G2]O'@}QVO1G1|O'CcQUO1G1|O'ChQUO'#GWO8zQUO1G2]OOQR1G2O1G2OOOQR1G2U1G2UOOQR1G2W1G2WOOQR1G2Y1G2YO'CmQUO1G2^O!4xQUO1G2^OOQR1G2v1G2vO'CuQUO1G2vO$>}QUO1G2`OOQQ'#Cv'#CvO'CzQUO'#G[O'DuQUO'#G[O'DzQUO'#LRO'EYQUO'#G_OOQQ'#LS'#LSO'EhQUO1G2`O'EmQVO1G1kO'HOQVO'#GUOBUQUO'#FWOOQR'#Je'#JeO'EmQVO1G1kO'HYQUO'#FvOOQR1G2f1G2fO'H_QUO1G2gO'HdQUO'#JgO'2gQUO1G2gO!(zQVO1G2tO'HlQUO1G2xO'IuQUO1G3QO'J{QUO1G3XOOQQ1G3o1G3oO'KaQUO1G3oOOQR1G3Z1G3ZO'KfQUO'#KZO'2]QUO'#LTOGkQUO'#LVOOQR'#Gy'#GyO#DhQUO'#LXOOQR'#HQ'#HQO'KpQUO'#GvO'#wQUO'#GuOOQR1G2{1G2{O'LmQUO1G2{O'MdQUO1G3ZO'MoQUO1G3_O'MtQUO1G3_OOQR1G3_1G3_O'M|QUO'#H]OOQR'#H]'#H]O( VQUO'#H]O!(zQVO'#H`O!(zQVO'#H_OOQR'#LZ'#LZO( [QUO'#LZOOQR'#Jk'#JkO( aQVO,5=vOOQQ,5=v,5=vO( hQUO'#H^O( pQUO'#HZOOQQ1G3a1G3aO( zQUO,5@vOOQQ,5@v,5@vO%)WQUO,5@vO%)]QUO,5@vO%$VQUO,5:eO(%iQUO'#KkO(%wQUO'#KkOOQQ,5:e,5:eOOQQ'#JS'#JSO(&SQUO'#D}O(&^QUO'#KqOGkQUO'#LVO('YQUO'#D}OOQQ'#Hp'#HpOOQQ'#Hr'#HrOOQQ'#Hs'#HsOOQQ'#Kl'#KlOOQQ'#JU'#JUO('dQUO,5:hOOQQ,5:h,5:hO((aQUO'#LVO((nQUO'#HtO()UQUO,5@vO()]QUO'#H{O()hQUO'#L^O()pQUO,5>fO()uQUO'#L]OOQQ1G3}1G3}O(-lQUO1G3}O(-sQUO1G3}O(-zQUO1G4TO(/QQUO1G4TO(/VQUO,5A|O!6nQUO1G4hO!(zQVO'#IiOOQQ1G4m1G4mO(/[QUO1G4mO(1_QVO1G4pPOOO1G.h1G.hP!A_{,UO1G.hP(3_QUO'#LeP(3j{,UO1G.hP(3o{7[O1G.hPO{O-E=s-E=sPOOO,5A},5A}P(3w{,UO,5A}POOO1G5Q1G5QO!(zQVO7+$]O(3|QUO'#CzOOQQ,59_,59_O(4XQbO,59dO(4dQbO,59_OOQQ,59^,59^OOQQ7+)w7+)wO!M_QVO'#JtO(4oQUO,5@kOOQQ1G.p1G.pOOQQ1G2k1G2kO(4wQUO1G2kO(4|QUO7+(sOOQQ7+*X7+*XO(7bQUO7+*XO(7iQUO7+*XO(1_QVO7+*[O#NeQUO7+(sO(7vQVO'#JbO(8ZQUO,5AjO(8cQUO,5;vOOQQ'#Cp'#CpOOQQ,5;w,5;wO!(zQVO'#F[OOQQ-E=_-E=_O!M_QVO,5;uOOQQ1G1`1G1`OOQQ,5?k,5?kOOQQ-E<}-E<}OOQR'#Dg'#DgOOQR'#Di'#DiOOQR'#Dl'#DlO(9lQ!eO'#K`O(9sQMkO'#K`O(9zQ!eO'#K`OOQR'#K`'#K`OOQR'#JQ'#JQO(:RQ!eO,59zOOQQ,59z,59zO(:YQbO,5?mOOQQ-E=P-E=PO(:hQbO1G6eOOQR7+$}7+$}OOQR7+&q7+&qOOQR7+&x7+&xO'8uQUO7+&qO(:sQUO7+&OO#6WQUO7+&OO(;hQUO1G/UO(<OQUO1G/UO(<jQUO7+*ROOQQ7+*V7+*VO(>]QUO,5?tOOQQ-E=W-E=WO(?fQUO7+&ZOOQQ,5@Y,5@YOOQQ-E=l-E=lO(?kQUO'#LOO@XQVO'#EiO(@wQUO1G1_OOQQ1G1_1G1_O(BQQUO,5?}OOQQ,5?},5?}OOQQ-E=a-E=aO(BfQUO'#KpOOQR7+,w7+,wO#DhQUO7+,wOOQR7+,y7+,yO(BsQUO,5=iO#DsQUO'#JjO(CUQUO,5ArOOQR1G3U1G3UOOQR1G3V1G3VO(CdQUO7+,zOOQR7+,z7+,zO(E[QUO,5:wO(FyQUO'#EwO!(zQVO,5;VO(GlQUO,5:wO(GvQUO'#EpO(HXQUO'#EzOOQQ,5;Z,5;ZO#K]QVO'#ExO(HoQUO,5:wO(HvQUO'#EyO#GgQUO'#JZO(J`QUO,5AdOOQQ1G0p1G0pO(JkQUO,5;WO!<[QUO,5;^O(KUQUO,5;_O(KdQUO,5;WO(MvQUO,5;`OOQQ-E=Y-E=YO(NOQUO1G0}OOQQ1G1O1G1OO(NyQUO1G1OO)!PQVO1G1OO)!WQVO1G1OO)!bQUO1G0|OOQQ1G0|1G0|OOQQ1G1P1G1PO)#_QUO'#JoO)#iQUO,5A[OOQQ1G0b1G0bOOQQ-E=Z-E=ZO)#qQUO,5;iO!<[QUO,5;iO)$nQVO,5:zO)$uQUO,5;gO$ mQUO7+&YOOQQ7+&Y7+&YO!(zQVO'#EfO)$|QUO,5:|OOQQ'#Ks'#KsOOQQ-E=V-E=VOOQQ,5A^,5A^OOQQ'#Jl'#JlO)(qQUO7+&PPOQQ7+&P7+&POOQQ7+)V7+)VO))iQUO7+)VO)*oQVO7+)VOOQQ,5>m,5>mO$)YQVO'#JsO)*vQUO,5@rOOQQ1G/S1G/SOOQQ7+${7+${O)+RQUO7+(RO)+WQUO7+(ROOQR7+(R7+(RO$>uQUO7+(ROOQQ7+%u7+%uOOQR-E=^-E=^O!0VQUO,5;oOOQQ,5@O,5@OOOQQ-E=b-E=bO$0^QUO1G1hOOQQ1G1h1G1hOOQR7+'Q7+'QOOQR1G1s1G1sOBUQUO,5;rO)+tQUO,5<YO)+{QUO1G1sO)-UQUO1G1sO!0tQVO7+']O)-ZQVO7+']O)2yQUO7+'dO)3OQVO7+'hO)5dQUO7+'wO)5nQUO7+'hO)6tQVO7+'hOKkQUO7+'wO$>hQUO,5<rO!4xQUO7+'xO)6{QUO7+'xOOQR7+(b7+(bO)7QQUO7+'zO)7VQUO,5<vO'CzQUO,5<vO)7}QUO,5<vO'CzQUO,5<vOOQQ,5<w,5<wO)8`QVO,5<xO'EYQUO'#JfO)8jQUO,5AmO)8rQUO,5<yOOQR7+'z7+'zO)8}QVO7+'VO)5gQUO'#K}OOQR-E=c-E=cO);`QVO,5<bOOQQ,5@R,5@RO!6nQUO,5@ROOQQ-E=e-E=eO)=wQUO7+(`O)>}QUO7+(dO)?SQVO7+(dOOQQ7+(l7+(lOOQQ7+)Z7+)ZO)?[QUO'#KjO)?fQUO'#KjOOQR,5=b,5=bO)?sQUO,5=bO!;bQUO,5=bO!;bQUO,5=bO!;bQUO,5=bOOQR7+(g7+(gOOQR7+(u7+(uOOQR7+(y7+(yOOQR,5=w,5=wO)?xQUO,5=zO)AOQUO,5=yOOQR,5Au,5AuOOQR-E=i-E=iOOQQ1G3b1G3bO)BUQUO,5=xO)BZQVO'#EfOOQQ1G6b1G6bO%)WQUO1G6bO%)]QUO1G6bOOQQ1G0P1G0POOQQ-E=Q-E=QO)DrQUO,5AVO(%iQUO'#JTO)D}QUO,5AVO)D}QUO,5AVO)EVQUO,5:iO8zQUO,5:iOOQQ,5>],5>]O)EaQUO,5AqO)EhQUO'#EVO)FrQUO'#EVO)G]QUO,5:iO)GgQUO'#HlO)GgQUO'#HmOOQQ'#Ko'#KoO)HUQUO'#KoO!(zQVO'#HnOOQQ,5:i,5:iO)HvQUO,5:iO!M_QVO,5:iOOQQ-E=S-E=SOOQQ1G0S1G0SOOQQ,5>`,5>`O)H{QUO1G6bO!(zQVO,5>gO)LjQUO'#JrO)LuQUO,5AxOOQQ1G4Q1G4QO)L}QUO,5AwOOQQ,5Aw,5AwOOQQ7+)i7+)iO*!lQUO7+)iOOQQ7+)o7+)oO*'kQVO1G7hO*)mQUO7+*SO*)rQUO,5?TO**xQUO7+*[POOO7+$S7+$SP*,kQUO'#LfP*,sQUO,5BPP*,x{,UO7+$SPOOO1G7i1G7iO*,}QUO<<GwOOQQ1G.y1G.yOOQQ'#IT'#ITO*.pQUO,5@`OOQQ,5@`,5@`OOQQ-E=r-E=rOOQQ7+(V7+(VOOQQ<<Ms<<MsO*/yQUO<<MsO*1|QUO<<MvO*3oQUO<<L_O*4TQUO,5?|OOQQ,5?|,5?|OOQQ-E=`-E=`OOQQ1G1b1G1bO*5^QUO,5;vO*6dQUO1G1aOOQQ1G1a1G1aOOQR,5@z,5@zO*7mQ!eO,5@zO*7tQMkO,5@zO*7{Q!eO,5@zOOQR-E=O-E=OOOQQ1G/f1G/fO*8SQ!eO'#DwOOQQ1G5X1G5XOOQR<<J]<<J]O*8ZQUO<<IjO*9OQUO7+$pOOQQ<<Iu<<IuO(7vQVO,5;ROOQR<=!c<=!cOOQQ1G3T1G3TOOQQ,5@U,5@UOOQQ-E=h-E=hOOQR<=!f<=!fO*9{QUO1G0cO*:SQUO'#EzO*:dQUO1G0cO*:kQUO'#I}O*<RQUO1G0qO!(zQVO1G0qOOQQ,5;[,5;[OOQQ,5;],5;]OOQQ,5?u,5?uOOQQ-E=X-E=XO!<[QUO1G0xO*=bQUO1G0xOOQQ1G0y1G0yO*=sQUO'#ElOOQQ1G0z1G0zOOQQ7+&j7+&jO*>XQUO7+&jO*?_QVO7+&jOOQQ7+&h7+&hOOQQ,5@Z,5@ZOOQQ-E=m-E=mO*@ZQUO1G1TO*@eQUO1G1TO*AOQUO1G0fOOQQ1G0f1G0fO*BUQUO'#K{O*B^QUO1G1ROOQQ<<It<<ItOOQQ'#Hb'#HbO'+fQUO,5={OOQQ'#Hd'#HdO'+fQUO,5=}OOQQ-E=j-E=jPOQQ<<Ik<<IkPOQQ-E=k-E=kOOQQ<<Lq<<LqO*BcQUO'#LaO*CoQUO'#L`OOQQ,5@_,5@_OOQQ-E=q-E=qOOQR<<Km<<KmO$>uQUO<<KmO*C}QUO<<KmOOQR1G1Z1G1ZOOQQ7+'S7+'SO!M_QVO1G1tO*DSQUO1G1tOOQR7+'_7+'_OOQR<<Jw<<JwO!0tQVO<<JwOOQR<<KO<<KOO*D_QUO<<KSO*EeQVO<<KSOKkQUO<<KcO!M_QVO<<KcO*ElQUO<<KSO!0tQVO<<KSO*FuQUO<<KSO*FzQUO<<KcO*GVQUO<<KdOOQR<<Kd<<KdOOQR<<Kf<<KfO*G[QUO1G2bO)7VQUO1G2bO'CzQUO1G2bO*GmQUO1G2dO*HsQVO1G2dOOQQ1G2d1G2dO*H}QVO1G2dO*IUQUO,5@QOOQQ-E=d-E=dOOQQ1G2e1G2eO*IdQUO1G1|O*JmQVO1G1|O*JtQUO1G1|OOQQ1G5m1G5mOOQR<<Kz<<KzOOQR<<LO<<LOO*JyQVO<<LOO*KUQUO<<LOOOQR1G2|1G2|O*KZQUO1G2|O*KbQUO1G3eOOQR1G3d1G3dOOQQ7++|7++|O%)WQUO7++|O*KmQUO1G6qO*KmQUO1G6qO(%iQUO,5?oO*KuQUO,5?oOOQQ-E=R-E=RO*LQQUO1G0TOOQQ1G0T1G0TO*L[QUO1G0TO!M_QVO1G0TO*LaQUO1G0TOOQQ1G3w1G3wO*LkQUO,5:qO)EhQUO,5:qO*MXQUO,5:qO)EhQUO,5:qO$#uQUO,5:uO*MvQVO,5>VO)GgQUO'#JpO*NQQUO1G0TO*NcQVO1G0TOOQQ1G3u1G3uO*NjQUO,5>WO*NuQUO,5>XO+ dQUO,5>YO+!jQUO1G0TO%)]QUO7++|O+#pQUO1G4ROOQQ,5@^,5@^OOQQ-E=p-E=pOOQQ<<MT<<MTOOQQ<<Mn<<MnO+$yQUO1G4oP+&|QUO'#JvP+'UQUO,5BQPO{O1G7k1G7kPOOO<<Gn<<GnOOQQANC_ANC_OOQR1G6f1G6fO+'^Q!eO,5:cOOQQ,5:c,5:cO+'eQUO1G0mO+(qQUO7+&]O+*QQUO7+&dO+*cQUO,5;WOOQQ<<JU<<JUO+*qQUO7+&oOOQQ7+&Q7+&QO!4xQUO'#J^O++lQUO,5AgOOQQ7+&m7+&mOOQQ1G3g1G3gO++tQUO1G3iOOQQ,5>n,5>nO+/iQUOANAXOOQRANAXANAXO+/nQUO7+'`OOQRAN@cAN@cO+0zQVOAN@nO+1RQUOAN@nO!0tQVOAN@nO+2[QUOAN@nO+2aQUOAN@}O+2lQUOAN@}O+3rQUOAN@}OOQRAN@nAN@nO!M_QVOAN@}OOQRANAOANAOO+3wQUO7+'|O)7VQUO7+'|OOQQ7+(O7+(OO+4YQUO7+(OO+5`QVO7+(OO+5gQVO7+'hO+5nQUOANAjOOQR7+(h7+(hOOQR7+)P7+)PO+5sQUO7+)PO+5xQUO7+)POOQQ<= h<= hO+6QQUO7+,]O+6YQUO1G5ZOOQQ1G5Z1G5ZO+6eQUO7+%oOOQQ7+%o7+%oO+6vQUO7+%oO*NcQVO7+%oOOQQ7+)a7+)aO+6{QUO7+%oO+8RQUO7+%oO!M_QVO7+%oO+8]QUO1G0]O*LkQUO1G0]O)EhQUO1G0]OOQQ1G0a1G0aO+8zQUO1G3qO+:QQVO1G3qOOQQ1G3q1G3qO+:[QVO1G3qO+:cQUO,5@[OOQQ-E=n-E=nOOQQ1G3r1G3rO%)WQUO<= hOOQQ7+*Z7+*ZPOQQ,5@b,5@bPOQQ-E=t-E=tOOQQ1G/}1G/}OOQQ,5?x,5?xOOQQ-E=[-E=[OOQRG26sG26sO+:zQUOG26YO!0tQVOG26YO+<TQUOG26YOOQRG26YG26YO!M_QVOG26iO!0tQVOG26iO+<YQUOG26iO+=`QUOG26iO+=eQUO<<KhOOQQ<<Kj<<KjOOQRG27UG27UOOQR<<Lk<<LkO+=vQUO<<LkOOQQ7+*u7+*uOOQQ<<IZ<<IZO+={QUO<<IZO!M_QVO<<IZO+>QQUO<<IZO+?WQUO<<IZO*NcQVO<<IZOOQQ<<L{<<L{O+?iQUO7+%wO*LkQUO7+%wOOQQ7+)]7+)]O+@WQUO7+)]O+A^QVO7+)]OOQQANESANESO!0tQVOLD+tOOQRLD+tLD+tO+AeQUOLD,TO+BkQUOLD,TOOQRLD,TLD,TO!0tQVOLD,TOOQRANBVANBVOOQQAN>uAN>uO+BpQUOAN>uO+CvQUOAN>uO!M_QVOAN>uO+C{QUO<<IcOOQQ<<Lw<<LwOOQR!$( `!$( `O!0tQVO!$( oOOQR!$( o!$( oOOQQG24aG24aO+DjQUOG24aO+EpQUOG24aOOQR!)9EZ!)9EZOOQQLD){LD){O+EuQUO'#CgO(dQUO'#CgO+IrQUO'#CzO+LcQUO'#CzO!E{QUO'#CzO+M[QUO'#CzO+MoQUO'#CzO,#bQUO'#CzO,#rQUO'#CzO,$PQUO'#CzO,$[QbO,59dO,$gQbO,59dO,$rQbO,59dO,$}QbO'#CxO,%`QbO'#CxO,%qQbO'#CxO,&SQUO'#CgO,(gQUO'#CgO,(tQUO'#CgO,+iQUO'#CgO,.lQUO'#CgO,.|QUO'#CgO,2uQUO'#CgO,2|QUO'#CgO,3|QUO'#CgO,6VQUO,5:xO#?kQUO,5:xO#?kQUO,5:xO#=ZQUO'#L[O,6sQbO'#CxO,7OQbO'#CxO,7ZQbO'#CxO,7fQbO'#CxO#6tQUO'#E^O,7qQUO'#E^O,9OQUO'#HgO,9pQbO'#CxO,9{QbO'#CxO,:WQUO'#CwO,:]QUO'#CwO,:bQUO'#CpO,:pQbO,59dO,:{QbO,59dO,;WQbO,59dO,;cQbO,59dO,;nQbO,59dO,;yQbO,59dO,<UQbO,59dO,6VQUO1G0dO,<aQUO1G0dO#?kQUO1G0dO,7qQUO1G0dO,>nQUO'#KZO,?OQUO'#CzO,?^QbO,59dO,6VQUO7+&OO,<aQUO7+&OO,?iQUO'#EwO,@[QUO'#EzO,@{QUO'#E^O,AQQUO'#GcO,AVQUO'#CwO,A[QUO'#CxO,AaQUO'#CxO,AfQUO'#CwO,AkQUO'#GcO,ApQUO'#KZO,B^QUO'#KZO,BhQUO'#CwO,BsQUO'#CwO,COQUO'#CwO,<aQUO,5:xO,7qQUO,5:xO,7qQUO,5:xO,CZQUO'#KZO,CnQbO'#CxO,CyQUO'#CsO,DOQUO'#E^",
26519
- stateData: ",Dt~O(nOSSOSTOSRPQVPQ'ePQ'gPQ'hPQ'iPQ'jPQ'kPQ'lPQ'mPQ~O*ZOS~OPmO]eOb!]Oe!POmTOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!TxO!VfO!X!XO!Y!WO!i!YO!opO!r!`O!s!aO!t!aO!u!bO!v!aO!x!cO!{!dO#V#QO#a#VO#b#TO#i#OO#p!xO#t!fO#v!eO$R!gO$T!hO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO${!tO$}!uO%U!yO%_#ZO%`#[O%a#YO%c!zO%e#UO%g!{O%l#SO%o!|O%v!}O%|#PO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(rRO)QYO)TaO)V|O)W{O)XiO)Y!ZO)[XO)hcO)idO~OR#bOV#]O'e#^O'g#_O'h#`O'i#`O'j#aO'k#aO'l#_O'm#_O~OX#dO(o#fO(q#dO~O]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!TjX!VZX!VjX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(rjX(uZX(v$]X(wZX(xZX)TZX)TjX)UZX)VZX)VjX)WZX)WjX)XZX)YZX)jZX~O)XjX!UZX~P(dO]#}O!V#lO!X#{O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO(w#kO(x#kO)T#mO)U#oO)V#nO)W#pO)X#jO)Y#|O~Oe$RO%Y$SO'[$TO'_$UO(y$OO~Om$VO~O!T$WO](}Xe(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}Xz(}X!O(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)T(}X)V(}X)W(}X)X(}X~Om$VO~P.ZOm$VO!g$YO)j$YO~OX$ZO)]$ZO~O!R$[O)P)RP)Y)RP~OPmO]$eOb!]Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!TxO!V$fO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO)QYO)T$kO)W$kO)XiO)Y!ZO)[XO)hcO)idO~Om$_O#t$lO(rRO~P0zO](]Xb'yXe(]Xm'yXm(]Xs'yXs(]Xt'yXt(]Xu'yXu(]Xv'yXv(]Xw'yXw(]Xx'yXx(]Xy'yXy(]Xz'yXz(]X|'yX!O'yX!V(]X!o(]X!r'yX!r(]X!s'yX!s(]X!t'yX!t(]X!u'yX!u(]X!v'yX!v(]X!x'yX!x(]X!{(]X#a'yX#b'yX%e'yX%l'yX%o(]X%v(]X&m'yX&r'yX&s'yX(r'yX(r(]X)T(]X)V(]X)W(]X~Ob!TOm$oOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO&r#WO&s$wO])aXe)aXm)aX!V)aX!{)aX%v)aX(r)aX)T)aX)V)aX)W)aX~O)X$vO~P:nOPmO]eOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO)TaO)V|O)W{O)Y!ZO)[XO)hcO)idO~Ob%QOm:zO!|%RO(r$xO~P<lO)T%SO~Ob!]Om$_O|#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r:}O~P<lOPmO]$eOb%QOm:zO!V$fO!W%_O!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W%]O)Y!ZO)[XO)hcO)idO)j%[O~O]%hOe!POm%bO!V%kO!{!dO%v$mO(r;OO)T%dO)V%iO)W%iO~O(v%mO~O)X#jO~O(r%nO](tX!V(tX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)T(tX)U(tX)V(tX)W(tX)X(tX)Y(tX!g(tX)j(tX[(tX!W(tX(v(tX!U(tXQ(tX!d(tX~OP%oO(pQO~PCQO]%hOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V%kO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO!{!dO%o!|O%v!}O)T;`O)V|O)W|O~Om%rO!o%wO(r$xO~PE_O!TxO#v!eO(v%yO)j%|O])eX!V)eX~O]%hOe!POm%rO!V%kO!{!dO%v!}O(r$xO)T;`O)V|O)W|O~O!TxO#v!eO)X&PO)j&QO~O!U&TO~P!QO]&YO!TxO!V&WO)T&VO)V&ZO)W&ZO~Oq&UO~PHrO]&cO!V&bO~OPmO]eOe!PO!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO)TaO)V|O)W{O)Y!ZO)[XO)hcO)idO~Ob%QOm:zO%v$mO(r$xO~PIgO]%hOe!POm;[O!V%kO!{!dO%v$mO(r$xO)T;`O)V|O)W|O~Oq&fO](tX])eX!V(tX!V)eX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)T(tX)U(tX)V(tX)W(tX)X(tX)Y(tX[(tX[)eX!U(tX~O!g$YO)j$YO~PL]O!g(tX)j(tX~PL]O](tX!V(tX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)T(tX)U(tX)V(tX)W(tX)X(tX)Y(tX!g(tX)j(tX[(tX!U(tX~O])eX!V)eX[)eX~PNkOb&hO&m!RO]&lXe&lXm&lXs&lXt&lXu&lXv&lXw&lXx&lXy&lXz&lX!O&lX!V&lX!r&lX!s&lX!t&lX!u&lX!v&lX!x&lX!{&lX%v&lX&r&lX&s&lX(r&lX)T&lX)V&lX)W&lX)X&lX[&lX!T&lX!X&lX!Y&lX![&lX!^&lX!_&lX!a&lX!b&lX!c&lX!e&lX!f&lX!h&lX(u&lX(w&lX(x&lX)U&lX)Y&lX!g&lX)j&lX!W&lXQ&lX!d&lX(v&lX!U&lX#v&lX~Oq&fOm(}X[(}XQ(}X!d(}X!h(}X)Y(}X)j(}X~P.ZO!g$YO)j$YO](tX!V(tX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)T(tX)U(tX)V(tX)W(tX)X(tX)Y(tX[(tX!W(tX(v(tX!U(tXQ(tX!d(tX~OPmO]$eOb%QOm:zO!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W$kO)Y!ZO)[XO)hcO)idO~O](}Xe(}Xm(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}Xz(}X!O(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)T(}X)V(}X)W(}X)X(}X[(}XQ(}X!d(}X!h(}X)Y(}X)j(}X~O]#}O~P!*qO]&lO~O])bXb)bXe)bXm)bXs)bXt)bXu)bXv)bXw)bXx)bXy)bXz)bX|)bX!O)bX!V)bX!o)bX!r)bX!s)bX!t)bX!u)bX!v)bX!x)bX!{)bX#a)bX#b)bX%e)bX%l)bX%o)bX%v)bX&m)bX&r)bX&s)bX(r)bX)T)bX)V)bX)W)bX~O(pQO~P!-ZO%U&nO~P!-ZO]&oO~O]#}O~O!TxO~O$W&wO(r%nO(v&vO~O]&xOx&zO~O]&xO~OPmO]$eOb%QOm:zO!TxO!V$fO!X!XO!Y!WO!i!YO#V#QO#p!xO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r:mO)QYO)T$kO)W$kO)XiO)Y!ZO)[XO)hcO)idO~O]'PO~O!T$WO)X'RO~P!(zO)X'TO~O)X'UO~O(r'VO~O)X'YO~P!(zOm;^O%U'^O%e'^O(r;PO~Ob!TOm$oOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO~O(v'bO~O)X'dO~P!(zO!TxO(r%nO)j'fO~O(r%nO~O]'iO~O]'jOe%nXm%nX!V%nX!{%nX%v%nX(r%nX)T%nX)V%nX)W%nX~O]'nO!V'oO!X'lO!g'lO%Z'lO%['lO%]'lO%^'lO%_'pO%`'pO%a'lO(x'mO)j'lO)x'qO~P8zO]%hOb!TOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!V%kO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO!{!dO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO)T;`O)V|O)W|O~Om;_Oq&UO%v$mO(r;QO~P!8jO(r%nO(v'vO)X'wO~O]&cO!T'yO~Om$oO!O!_O!T(QO!l(VO(r$nO(v(PO)QYO~Om$oO|(^O!T(ZO#b(^O(r$nO~Ob!TOm$oO|#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO~O](`O~OPmOb%QOm:zO!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W$kO)[XO)hcO)idO~O](bO)Y(cO~P!=UO]#}O~P!<[OPmO]$eOb%QOm:zO!V(iO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W$kO)Y!ZO)[XO)hcO)idO~OY(jO(pQO(r%nO~O'f(mO~OS(qOT(nO*W(pO~O]#}O(n(tO~Q'nXX#dO(o(vO(q#dO~Oe)QOm({O&r#WO(r(zO~O!Y'Sa!['Sa!^'Sa!_'Sa!a'Sa!b'Sa!c'Sa!e'Sa!f'Sa!h'Sa(u'Sa)T'Sa)U'Sa)V'Sa)W'Sa)X'Sa)Y'Sa!g'Sa)j'Sa['Sa!W'Sa(v'Sa!U'SaQ'Sa!d'Sa~OPmOb%QOm:zO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)[XO)hcO)idO]'Sa!V'Sa!X'Sa(w'Sa(x'Sa~P!B_O!T$WO[(sP~P!(zO]oX]%WXeoXmnXqoXq%WXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!ToX!VoX!V%WX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!c%WX!e%WX!f%WX!gnX!h%WX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(roX(u%WX(w%WX(x%WX)ToX)T%WX)U%WX)VoX)V%WX)WoX)W%WX)X%WX)Y%WX)jnX[%WX~O)XoX[oX!U%WX~P!E{O])dO!V)eO!X)bO!g)bO%Z)bO%[)bO%])bO%^)bO%_)fO%`)fO%a)bO(x)cO)j)bO)x)gO~P8zOPmO]$eOb%QOm:zO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W$kO)Y!ZO)[XO)hcO)idO~O!V)lO~P!JwOe)oO%Y)pO(y$OO~O!T$WO!V)rO(w)sO!U)rP~P!JwO!T$WO~P!(zO)Z)zO~Om){O]!QX!h!QX)P!QX)Y!QX~O])}O!h*OO)P)RX)Y)RX~O)P*RO)Y*SO~Oe$RO%Y*TO'[$TO'_$UO(y$OO~Om*UO~Om*UO[(}X~P.ZOm*UO!g$YO)j$YO~O)X*VO~P:nOPmO]$eOb!]Om$_Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r:}O)T$kO)W$kO)Y!ZO)[XO)hcO)idO~Oq&fO~P!&zOq&fO!W(tX(v(tXQ(tX!d(tX~PNkO]'nO!V'oO!X'lO!g'lO%Z'lO%['lO%]'lO%^'lO%_'pO%`'pO%a'lO(x'mO)j'lO)x'qO~O]jXejXmhXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(rjX)TjX)VjX)WjX!TjX!hjX)YjX)jjX[jX~O!ljX(vjX)XjX!XjX!YjX![jX!^jX!_jX!ajX!bjX!cjX!ejX!fjX(ujX(wjX(xjX)UjX!gjX!WjXQjX!djX!UjX#vjX#TjX#VjX#pjXbjX|jX!ojX#ajX#bjX#ijX#tjX${jX%cjX%ejX%kjX%ljX%ojX&mjX)QjX~P#%yO(y*ZO~Om*[O~O](}Xe(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}Xz(}X!O(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)T(}X)V(}X)W(}X)X(}X!T(}X!X(}X!Y(}X![(}X!^(}X!_(}X!a(}X!b(}X!c(}X!e(}X!f(}X!h(}X(u(}X(w(}X(x(}X)U(}X)Y(}X!g(}X)j(}X[(}X!W(}XQ(}X!d(}X(v(}X!U(}X#v(}X~Om*[O~P#+ROs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO])aae)aam)aa!V)aa!{)aa%v)aa(r)aa)T)aa)V)aa)W)aaQ)aa!d)aa!h)aa)Y)aa)j)aa[)aa!T)aa(v)aa)X)aa~O&r#WO&s$wO~P#.qOq&fOm(}X~P#+RO&r)aa~P#.qO]ZXmhXqZXqjX!TjX!VZX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX(uZX(wZX(xZX)TZX)UZX)VZX)WZX)XZX)YZX)jZX[ZX~O!WZX(vZX!UZXQZX!dZX~P#1jO]#}O!V#lO!X#{O(w#kO(x#kO~O!Y&xa![&xa!^&xa!_&xa!a&xa!b&xa!c&xa!e&xa!f&xa!g&xa!h&xa(u&xa)T&xa)U&xa)V&xa)W&xa)X&xa)Y&xa)j&xa[&xa!W&xa(v&xa!U&xaQ&xa!d&xa~P#3zOm;hO!T$WO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~PKkOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!|%RO~PKkO]&cO!V&bO[#Qa!T#Qa!h#Qa#v#Qa)X#Qa)j#QaQ#Qa!d#Qa(v#Qa~Oq&fO!T$WO~O[*cO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[*cO~O[*eO]&cO!V&bO~O]&YOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V&WO&r#WO&s$wO)T&VO)V&ZO)W&ZO~O[rXQrX!drX!hrX)YrX)XrX~P#9{O[*hO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h*iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!W)kX~P#3zO!W*kO!h*lO~O!W*kO!h*lO~P!(zO!W*kO~Oq&fO!g$YO!h*mO)j$YO](tX!V(tX!W(tX!W*OX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX(u(tX(w(tX(x(tX)T(tX)U(tX)V(tX)W(tX)Y(tX~O!h(tX~P#=ZO!W*oO~Oe$RO%Y*TO(y:rO~Om;kO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!|%RO~PBUO]*vO!T*qO!V&bO!h*tO#v!eO)j*rO)X)qX~O!h*tO)X)qX~O)X*wO~Oq&fO])eX!T)eX!V)eX!h)eX#v)eX)X)eX)j)eX[)eXQ)eX!d)eX(v)eX~Oq&fO~OP%oO(pQO]%ha!V%ha!X%ha!Y%ha![%ha!^%ha!_%ha!a%ha!b%ha!c%ha!e%ha!f%ha!h%ha(r%ha(u%ha(w%ha(x%ha)T%ha)U%ha)V%ha)W%ha)X%ha)Y%ha!g%ha)j%ha[%ha!W%ha(v%ha!U%haQ%ha!d%ha~Oe$RO%Y$SO(y:oO~Om:wO~O!TxO#v!eO)j%|O~Om<[O&r#WO(r;gO~O$Z+TO%`+UO~O!TxO#v!eO)X+VO)j+WO~OPmO]$eOb%QOm:zO!V$fO!X!XO!Y!WO!i!YO#V#QO$Z+TO%_#ZO%`+YO%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W$kO)Y!ZO)[XO)hcO)idO~O!U+ZO~P!QOb!TOm$oOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a+aO#b+bO#i+cO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO)QYO~OQ)lP!d)lP~P#GgO]&YOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V&WO)T&VO)V&ZO)W&ZO~O[#kX!T#kX#v#kX)X#kX)j#kXQ#kX!d#kX!h#kX)Y#kX!x#kX(v#kX~P#IkOPmO]$eOb%QOm:zOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V$fO!W+iO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T+jO)W$kO)Y!ZO)[XO)hcO)idO~O]&cO!V+kO~O]&YO!V&WO)QYO)T&VO)V&ZO)W&ZO)Y+nO[)dP~P8zO]&YO!V&WO)T&VO)V&ZO)W&ZO~O[#nX!T#nX#v#nX)X#nX)j#nXQ#nX!d#nX!h#nX)Y#nX!x#nX(v#nX~P#NeO!TxO])nX!V)nX~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O#T+vO#p+wO(x+tO)V+rO)W+rO~O]#jX!T#jX!V#jX[#jX#v#jX)X#jX)j#jXQ#jX!d#jX!h#jX)Y#jX!x#jX(v#jX~P$ xO#V+yO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!l+zO#T+vO#V+yO#p+wO(x+tO)V+zO)W+zO])fP!T)fP!V)fP#v)fP(v)fP)j)fP[)fP!h)fP)X)fP~O!x)fPQ)fP!d)fP~P$#uOPmO]$eOb%QOm:zOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)W$kO)Y!ZO)[XO)hcO)idO~O!W,QO)T,RO~P$%pO)QYO)Y+nO[)dP~P8zO]&cO!V&bO[&Za!T&Za!h&Za#v&Za)X&Za)j&ZaQ&Za!d&Za(v&Za~OPmO]$eOb!]Om:|Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r;RO)T$kO)W$kO)Y!ZO)[XO)hcO)idO~OQ(zP!d(zP~P$)YO]#}O!V#lO(w#kO(x#kO!X'Pa!Y'Pa!['Pa!^'Pa!_'Pa!a'Pa!b'Pa!c'Pa!e'Pa!f'Pa!h'Pa(u'Pa)T'Pa)U'Pa)V'Pa)W'Pa)X'Pa)Y'Pa!g'Pa)j'Pa['Pa!W'Pa(v'Pa!U'PaQ'Pa!d'Pa~O]#}O!V#lO!X#{O(w#kO(x#kO~P!B_O!TxO#t!fO)QYO~P8zO!TxO(r%nO)j,[O~O#x,aO~OQ)aX!d)aX!h)aX)Y)aX)j)aX[)aX!T)aX(v)aX)X)aX~P:nO(v,eO(w,cO)Q$UX)X$UX~O(r,fO~O)QYO)X,iO~OPmO]$eOb!]Om:{Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!V$fO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO)QYO)T$kO)W$kO)XiO)Y!ZO)[XO)hcO)idO~O(r;SO~P$0kOPmO]$eOb%QOm:zO!TxO!V$fO!X!XO!Y!WO!i!YO#V#QO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r:mO)QYO)T$kO)W$kO)XiO)Y!ZO)[XO)hcO)idO~O$h,sO~OPmO]$eOb!]Om:{Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!V$fO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO$}!uO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO)QYO)T$kO)W$kO)Y!ZO)[XO)hcO)idO~O${,yO(r:}O)X,wO~P$7UO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)X,{O)Y#|O~P#3zO)X,{O~O)X,|O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X,}O)Y#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X-OO)Y#|O~P#3zOq&fO)QYO)j-QO~O)X-RO~Om;^O(r;PO~O]-YO!{!dO&r#WO&s$wO(r-UO)T-VO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO(v-]O)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!TxO$`!iO$e!jO$g!kO$h!lO$k-bO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(r:nOe$Xa!o$Xa!{$Xa#i$Xa#p$Xa#t$Xa#v$Xa$R$Xa$T$Xa$Y$Xa$Z$Xa${$Xa%U$Xa%c$Xa%g$Xa%o$Xa%|$Xa(k$Xa)V$Xa!U$Xa$c$Xa~P$0kO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X-cO)Y#|O~P#3zOm-eO!TxO)j,[O~O)j-gO~O]&]a!X&]a!Y&]a![&]a!^&]a!_&]a!a&]a!b&]a!c&]a!e&]a!f&]a!h&]a(u&]a(w&]a(x&]a)U&]a)V&]a)W&]a)X&]a)Y&]a!g&]a)j&]a[&]a!W&]a!T&]a#v&]a(v&]a!U&]aQ&]a!d&]a~O)T-kO!V&]a~P$DbO[-kO~O!W-kO~O!V-lO)T&]a~P$DbO](}Xe(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}Xz(}X!O(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)T(}X)V(}X)W(}X~Om;mO~P$GQO]&cO!V&bO)X-mO~Om;cO!o-pO#V+yO#i-uO#t!fO${,yO%c!zO%k-tO%o!|O%v!}O(r;TO)QYO~P!8jO!n-yO(r,fO~O)QYO)X-{O~OPmO]$eOb%QOm:zO!T.QO!V$fO!X!XO!Y!WO!i!YO#V.XO#a.WO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO(x.PO)T$kO)W$kO)X-}O)Y!ZO)[XO)hcO)idO~O!U.VO~P$JbO])^Xe)^Xs)^Xt)^Xu)^Xv)^Xw)^Xx)^Xy)^Xz)^X!O)^X!T)^X!V)^X!l)^X!r)^X!s)^X!t)^X!u)^X!v)^X!x)^X!{)^X%v)^X&r)^X&s)^X(r)^X(v)^X)T)^X)V)^X)W)^X)X)^X[)^X!h)^X)Y)^X!X)^X!Y)^X![)^X!^)^X!_)^X!a)^X!b)^X!c)^X!e)^X!f)^X(u)^X(w)^X(x)^X)U)^X!g)^X)j)^X!W)^XQ)^X!d)^X#T)^X#V)^X#p)^X#v)^Xb)^X|)^X!o)^X#a)^X#b)^X#i)^X#t)^X${)^X%c)^X%e)^X%k)^X%l)^X%o)^X&m)^X)Q)^X!U)^X~Om*[O~P$LlOm$oO!T(QO!l.^O(r$nO(v(PO)QYO~Oq&fOm)^X~P$LlOm$oO!n.cO!o.cO(r$nO)QYO~Om;dO!U.nO!n.pO!o.oO#i-uO${!tO$}!uO%g!{O%k-tO%o!|O%v!}O(r;VO)QYO~P!8jO!T(QO!l.^O(v(PO])OXe)OXm)OXs)OXt)OXu)OXv)OXw)OXx)OXy)OXz)OX!O)OX!V)OX!r)OX!s)OX!t)OX!u)OX!v)OX!x)OX!{)OX%v)OX&r)OX&s)OX(r)OX)T)OX)V)OX)W)OX~O)X)OX[)OX!X)OX!Y)OX![)OX!^)OX!_)OX!a)OX!b)OX!c)OX!e)OX!f)OX!h)OX(u)OX(w)OX(x)OX)U)OX)Y)OX!g)OX)j)OX!W)OXQ)OX!d)OX!U)OX#v)OX~P%%eO!T(QO~O!T(QO(v(PO~O(r%nO!U*QP~O!T(ZO(v.uO]&kae&kam&kas&kat&kau&kav&kaw&kax&kay&kaz&ka!O&ka!V&ka!r&ka!s&ka!t&ka!u&ka!v&ka!x&ka!{&ka%v&ka&r&ka&s&ka(r&ka)T&ka)V&ka)W&ka)X&ka[&ka!X&ka!Y&ka![&ka!^&ka!_&ka!a&ka!b&ka!c&ka!e&ka!f&ka!h&ka(u&ka(w&ka(x&ka)U&ka)Y&ka!g&ka)j&ka!W&kaQ&ka!d&ka!U&ka#v&ka~Om$oO!T(ZO(r$nO~O&r#WO&s$wO]&pae&pam&pas&pat&pau&pav&paw&pax&pay&paz&pa!O&pa!V&pa!r&pa!s&pa!t&pa!u&pa!v&pa!x&pa!{&pa%v&pa(r&pa)T&pa)V&pa)W&pa)X&pa[&pa!T&pa!X&pa!Y&pa![&pa!^&pa!_&pa!a&pa!b&pa!c&pa!e&pa!f&pa!h&pa(u&pa(w&pa(x&pa)U&pa)Y&pa!g&pa)j&pa!W&paQ&pa!d&pa(v&pa!U&pa#v&pa~O&s.zO~P!(zO!Y#qO![#rO!f#zO)T#mO!^'Ua!_'Ua!a'Ua!b'Ua!c'Ua!e'Ua!h'Ua(u'Ua)U'Ua)V'Ua)W'Ua)X'Ua)Y'Ua!g'Ua)j'Ua['Ua!W'Ua(v'Ua!U'UaQ'Ua!d'Ua~P#3zO!V'dX!X'dX!Y'dX!['dX!^'dX!_'dX!a'dX!b'dX!c'dX!e'dX!f'dX!h'dX(u'dX(w'dX(x'dX)T'dX)U'dX)V'dX)W'dX)Y'dX['dX~O].|O)X'dX!g'dX)j'dX!W'dX(v'dX!U'dXQ'dX!d'dX~P%2xO!Y#qO![#rO!f#zO)T#mO!^'Wa!_'Wa!a'Wa!b'Wa!c'Wa!e'Wa!h'Wa(u'Wa)U'Wa)V'Wa)W'Wa)X'Wa)Y'Wa!g'Wa)j'Wa['Wa!W'Wa(v'Wa!U'WaQ'Wa!d'Wa~P#3zO]#}O!T$WO!V.}O&r#WO&s$wO~O!X'Za!Y'Za!['Za!^'Za!_'Za!a'Za!b'Za!c'Za!e'Za!f'Za!h'Za(u'Za(w'Za(x'Za)T'Za)U'Za)V'Za)W'Za)X'Za)Y'Za!g'Za)j'Za['Za!W'Za(v'Za!U'ZaQ'Za!d'Za~P%6oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h'^a)X'^a!g'^a)j'^a['^a!W'^a(v'^a!U'^aQ'^a!d'^a~P#3zOPmO]$eOb%QOm:zO!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)T$kO)W%]O)Y!ZO)[XO)hcO)idO)j%[O~O!W/QO~P%:oOS(qOT(nO]#}O*W(pO~O]/TO'f/UO*W/RO~OS/YOT(nO*W/XO~O]#}O~Q'na!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO(v/[O)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O)X#Zi[#Zi~P#3zO]dXmhXqdXqjX!VdX!XdX!YdX![dX!^dX!_dX!adX!bdX!cdX!edX!fdX!gdX!hdX(udX(wdX(xdX)TdX)UdX)VdX)WdX)XdX)YdX)jdX[dX!WdX(vdX!TdX#vdX!UdXQdX!ddX~Oe/^O%Y*TO(y/]O~Om/_O~Om/`O~Oq&fO]ci!Vci!Xci!Yci![ci!^ci!_ci!aci!bci!cci!eci!fci!gci!hci(uci(wci(xci)Tci)Uci)Vci)Wci)Xci)Yci)jci[ci!Wci(vci!UciQci!dci~O!W/bO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO![#rO)T#mO!Y&zi!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!f&zi!h&zi(u&zi)U&zi)V&zi)W&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y&zi![&zi!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!f&zi!h&zi(u&zi)T&zi)U&zi)V&zi)W&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO)W#pO!h&zi(u&zi)U&zi)V&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO)V#nO)W#pO!h&zi(u&zi)U&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO)W#pO!^&zi!h&zi(u&zi)U&zi)V&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO)W#pO!^&zi!_&zi!h&zi(u&zi)U&zi)V&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO!^&zi!_&zi!h&zi(u&zi)U&zi)V&zi)W&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!b#yO!c#yO!e#yO!f#zO)T#mO!^&zi!_&zi!a&zi!h&zi(u&zi)U&zi)V&zi)W&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!f#zO)T#mO!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!h&zi(u&zi)U&zi)V&zi)W&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO)T#mO!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!f&zi!h&zi(u&zi)U&zi)V&zi)W&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO)U#oO)V#nO)W#pO!h&zi(u&zi)X&zi)Y&zi!g&zi)j&zi[&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h/cO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O[(sX~P#3zO!h/cO[(sX~O[/eO~O]%Xaq%Xa!X%Xa!Y%Xa![%Xa!^%Xa!_%Xa!a%Xa!b%Xa!c%Xa!e%Xa!f%Xa!h%Xa(u%Xa(w%Xa(x%Xa)U%Xa)V%Xa)W%Xa)X%Xa)Y%Xa!g%Xa)j%Xa[%Xa!W%Xa!T%Xa#v%Xa(v%Xa!U%XaQ%Xa!d%Xa~O)T/fO!V%Xa~P&,aO[/fO~O!W/fO~O!V/gO)T%Xa~P&,aO!X'Zi!Y'Zi!['Zi!^'Zi!_'Zi!a'Zi!b'Zi!c'Zi!e'Zi!f'Zi!h'Zi(u'Zi(w'Zi(x'Zi)T'Zi)U'Zi)V'Zi)W'Zi)X'Zi)Y'Zi!g'Zi)j'Zi['Zi!W'Zi(v'Zi!U'ZiQ'Zi!d'Zi~P%6oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h'^i)X'^i!g'^i)j'^i['^i!W'^i(v'^i!U'^iQ'^i!d'^i~P#3zO!W/lO~P%:oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h/nO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!U)rX~P#3zO(r/qO~O!V/sO(w)sO)j/uO~O!h/nO!U)rX~O!U/vO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)T#mO)U#oO)V#nO)W#pO)Y#|O!h`i(u`i)X`i!g`i)j`i[`i!W`i(v`i!U`iQ`i!d`i~P#3zO!R/wO~Om){O]!Qa!h!Qa)P!Qa)Y!Qa~OP0PO]0OOm0PO!R0PO!T/|O!V/}O!X0PO!Y0PO![0PO!^0PO!_0PO!a0PO!b0PO!c0PO!e0PO!f0PO!g0PO!h0PO!i0PO(pQO(v0PO(w0PO(x0PO)T/yO)U/zO)V/zO)W/{O)X0PO)Y0PO)[XO~O[0SO~P&6yO!R$[O~O!h*OO)P)Ra)Y)Ra~O)P0WO~O])dO!V)eO!X)bO!g)bO%Z)bO%[)bO%])bO%^)bO%_)fO%`)fO%a)bO(x)cO)j)bO)x)gO~Oe)oO%Y*TO(y$OO~O)X0YO~O]oXeoXmnXqoXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!VoX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(roX)ToX)VoX)WoX!ToX!hoX)YoX[oXQoX!doX~O!loX(voX)XoX!XoX!YoX![oX!^oX!_oX!aoX!boX!coX!eoX!foX(uoX(woX(xoX)UoX!goX)joX!WoX!UoX#voX#ToX#VoX#poXboX|oX!ooX#aoX#boX#ioX#toX${oX%coX%eoX%koX%loX%ooX&moX)QoX~P&:uOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO~O])aie)aim)ai!V)ai!{)ai%v)ai(r)ai)T)ai)V)ai)W)aiQ)ai!d)ai!h)ai)Y)ai)j)ai[)ai!T)ai&r)ai(v)ai)X)ai~P&?sO]&cO!V&bO[#Qi!T#Qi!h#Qi#v#Qi)X#Qi)j#QiQ#Qi!d#Qi(v#Qi~O[raQra!dra!hra)Yra)Xra~P#9{O[raQra!dra!hra)Yra)Xra~P#IkO]&cO!V+kO[raQra!dra!hra)Yra)Xra~O!h*iO!W)ka~O!h*mO!W*Oa~OPmOb!]Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!X!XO!Y!WO!i!YO!s!aO!t!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO)QYO)XiO)Y!ZO)[XO)hcO)idO~O]eOe!POmTO!T*qO!U&TO!V0hO!opO!r!`O!u!bO!{!dO#i#OO#p!xO#t!fO$R!gO$T!hO${!tO$}!uO%U!yO%c!zO%g!{O%o!|O%v!}O%|#PO(rRO(w)sO)TaO)V|O)W{O~P&DuO!h*tO)X)qa~OPmO]$eOb!]Om:|O|#RO!T$WO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r;UO)QYO)T$kO)W$kO)Y0nO)[XO)hcO)idO[(sP[)dP~P&?sO!h*mO!W*OX~O]#}O!T$WO~O!h0sO!T)zX#v)zX)j)zX~O)X0uO~O)X0vO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X0xO)Y#|O~P#3zO)X0vO~P!?WO]1SOe!POm%bO!V1QO!{!dO%v$mO(r$xO)T0zO)Y0}O~O)V1OO)W1OO)j0{OQ#PX!d#PX!h#PX[#PX~P' dO!h1TOQ)lX!d)lX~OQ1VO!d1VO~O)Y1YO)j1XOQ#`X!d#`X!h#`X~P!<[O)Y1YO)j1XOQ#`X!d#`X!h#`X~P!;bOq&UO~O[#ka!T#ka#v#ka)X#ka)j#kaQ#ka!d#ka!h#ka)Y#ka!x#ka(v#ka~P#IkO]&cO!V+kO[#ka!T#ka#v#ka)X#ka)j#kaQ#ka!d#ka!h#ka)Y#ka!x#ka(v#ka~O!W1_O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W1_O)T1aO~P$%pO!W1_O~P!(zO]#ja!T#ja!V#ja[#ja#v#ja)X#ja)j#jaQ#ja!d#ja!h#ja)Y#ja!x#ja(v#ja~P$ xO[1eO]&cO!V+kO~O!h1fO[)dX~O[1hO~O]&cO!V+kO[#na!T#na#v#na)X#na)j#naQ#na!d#na!h#na)Y#na!x#na(v#na~O]1lOs#SXt#SXu#SXv#SXw#SXx#SXy#SXz#SX!T#SX!V#SX#T#SX#p#SX(x#SX)V#SX)W#SX!l#SX!x#SX#V#SX#v#SX(v#SX)j#SX[#SX!h#SX)X#SXQ#SX!d#SX)Y#SX~O]1mO~O]1pOm$oO!V$fO#V#QO(r$nO)hcO)idO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!l+zO#T+vO#V+yO#p+wO(x+tO)V+zO)W+zO~O])fX!T)fX!V)fX!x)fX#v)fX(v)fX)j)fX[)fX!h)fX)X)fXQ)fX!d)fX~P'+}O!x!cO]#Ri!T#Ri!V#Ri#v#Ri(v#Ri)j#Ri[#Ri!h#Ri)X#RiQ#Ri!d#Ri~O!W1xO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W1xO)T1zO~P$%pO!W1xO~P!(zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|OQ*RX!d*RX!h*RX~P#3zO)Y1{OQ({X!d({X!h({X~O!h1|OQ(zX!d(zX~OQ2OO!d2OO~O[2PO~O#t$lO)QYO~P8zOm-eO!TxO)j2TO~O[2UO~O#x,aOP#ui]#uib#uie#uim#uis#uit#uiu#uiv#uiw#uix#uiy#uiz#ui|#ui!O#ui!T#ui!V#ui!X#ui!Y#ui!i#ui!o#ui!r#ui!s#ui!t#ui!u#ui!v#ui!x#ui!{#ui#V#ui#a#ui#b#ui#i#ui#p#ui#t#ui#v#ui$R#ui$T#ui$Y#ui$Z#ui$`#ui$e#ui$g#ui$h#ui$k#ui$m#ui$o#ui$q#ui$s#ui$u#ui$w#ui${#ui$}#ui%U#ui%_#ui%`#ui%a#ui%c#ui%e#ui%g#ui%l#ui%o#ui%v#ui%|#ui&m#ui&r#ui&s#ui'Q#ui'R#ui'V#ui'Y#ui'a#ui'b#ui(k#ui(p#ui(r#ui)Q#ui)T#ui)V#ui)W#ui)X#ui)Y#ui)[#ui)h#ui)i#ui!U#ui$c#ui!n#ui%k#ui~O]&cO~O]&cO!TxO!V&bO#v!eO~O(v2ZO(w,cO)Q$Ua)X$Ua~O)QYO)X2]O~O[2^O~P,]O[2^O)X#jO~O[2^O~O$c2cOP$_i]$_ib$_ie$_im$_is$_it$_iu$_iv$_iw$_ix$_iy$_iz$_i|$_i!O$_i!T$_i!V$_i!X$_i!Y$_i!i$_i!o$_i!r$_i!s$_i!t$_i!u$_i!v$_i!x$_i!{$_i#V$_i#a$_i#b$_i#i$_i#p$_i#t$_i#v$_i$R$_i$T$_i$Y$_i$Z$_i$`$_i$e$_i$g$_i$h$_i$k$_i$m$_i$o$_i$q$_i$s$_i$u$_i$w$_i${$_i$}$_i%U$_i%_$_i%`$_i%a$_i%c$_i%e$_i%g$_i%l$_i%o$_i%v$_i%|$_i&m$_i&r$_i&s$_i'Q$_i'R$_i'V$_i'Y$_i'a$_i'b$_i(k$_i(p$_i(r$_i)Q$_i)T$_i)V$_i)W$_i)X$_i)Y$_i)[$_i)h$_i)i$_i!U$_i~O]1pO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)X2fO)Y#|O~P#3zOPmO]$eOb!]Om:{O|#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r:}O)T$kO)W$kO)X2iO)Y!ZO)[XO)hcO)idO~P&?sO)X2fO~O(r-UO~O)QYO)j2lO~O)X2nO~O]-YOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!{!dO!|%RO(r-UO)T-VO~O)T2sO~O]&cO!V2uO!h2vO)X)uX~O]-YO!{!dO(r-UO)T-VO~O)X2yO~O!TxO$`!iO$e!jO$g!kO$h!lO$k-bO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(r:nOe$Xi!o$Xi!{$Xi#i$Xi#p$Xi#t$Xi#v$Xi$R$Xi$T$Xi$Y$Xi$Z$Xi${$Xi%U$Xi%c$Xi%g$Xi%o$Xi%|$Xi(k$Xi)V$Xi!U$Xi$c$Xi~P$0kOm:{O(r:nO~P0zO]2}O~O)X2SO~O!u3PO(r%nO~O[3SO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h3TO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[3UO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO]&cO!V+kO!T%ui#v%ui)X%ui)j%ui~O!W3VO~Om:yO)X(}X~P$GQOb!TOm$oO|3]O#a#VO#b3[O#t!fO%e#UO%l3^O&m!RO&r#WO&s!TO(r$nO)QYO~P&?sOm;cO!o-pO#i-uO#t!fO${,yO%c!zO%k-tO%o!|O%v!}O(r;TO)QYO~P!8jO]&cO!V&bO)X3`O~O)X3aO~O)QYO)X3aO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)X3bO)Y#|O~P#3zO)X3bO~O)X3eO~O!U3gO~P$JbOm$oO(r$nO~O]3iO!T'yO~P'+iO!T(QO!l3lO(v(PO])Oae)Oam)Oas)Oat)Oau)Oav)Oaw)Oax)Oay)Oaz)Oa!O)Oa!V)Oa!r)Oa!s)Oa!t)Oa!u)Oa!v)Oa!x)Oa!{)Oa%v)Oa&r)Oa&s)Oa(r)Oa)T)Oa)V)Oa)W)Oa)X)Oa[)Oa!X)Oa!Y)Oa![)Oa!^)Oa!_)Oa!a)Oa!b)Oa!c)Oa!e)Oa!f)Oa!h)Oa(u)Oa(w)Oa(x)Oa)U)Oa)Y)Oa!g)Oa)j)Oa!W)OaQ)Oa!d)Oa!U)Oa#v)Oa~Om$oO!n.cO!o.cO(r$nO~O!h3pO)Y3rO!T)_X~O!o3tO)QYO~P8zO)X3uO~PGVO]3zOm({O!T$WO!{!dO%v$mO&r#WO(r(zO(v4OO)T3wO)V3{O)W3{O~O)X4PO)j4RO~P(&eOm;dO!U4TO!n.pO!o.oO#i-uO${!tO$}!uO%g!{O%k-tO%o!|O%v!}O(r;VO)QYO~P!8jOm;dO%v!}O(r;VO~P!8jO(v4UO~Om$oO!T(QO(r$nO(v(PO)QYO~O!l3lO~P((sO)j4WO!U&oX!h&oX~O!h4XO!U*QX~O!U4ZO~Ob4]Om$oO&m!RO(r$nO~O!T(ZO]&kie&kim&kis&kit&kiu&kiv&kiw&kix&kiy&kiz&ki!O&ki!V&ki!r&ki!s&ki!t&ki!u&ki!v&ki!x&ki!{&ki%v&ki&r&ki&s&ki(r&ki)T&ki)V&ki)W&ki)X&ki[&ki!X&ki!Y&ki![&ki!^&ki!_&ki!a&ki!b&ki!c&ki!e&ki!f&ki!h&ki(u&ki(w&ki(x&ki)U&ki)Y&ki!g&ki)j&ki!W&kiQ&ki!d&ki!U&ki#v&ki~O(v&ki~P(*TO(v.uO~P(*TO[4`O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[4`O~O[4aO~O]#}O!T$WO!V'Zi!X'Zi!Y'Zi!['Zi!^'Zi!_'Zi!a'Zi!b'Zi!c'Zi!e'Zi!f'Zi!h'Zi(u'Zi(w'Zi(x'Zi)T'Zi)U'Zi)V'Zi)W'Zi)X'Zi)Y'Zi!g'Zi)j'Zi['Zi!W'Zi(v'Zi!U'ZiQ'Zi!d'Zi~OPmOb%QOm:zO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)Y!ZO)[XO)hcO)idO]#]aq#]a!T#]a!V#]a)T#]a)V#]a)W#]a~O(r%nO)Y4fO[*YP~O*W4eO~O'f4hO*W4eO~O*W4iO~OmnXqoXq&wX~Oe4kO%Y*TO(y/]O~Oe4kO%Y*TO(y4lO~O!h/cO[(sa~O!W4pO~O]&cO!V+kO!T%uq#v%uq)X%uq)j%uq~O]#}O!T$WO!X'Zq!Y'Zq!['Zq!^'Zq!_'Zq!a'Zq!b'Zq!c'Zq!e'Zq!f'Zq!h'Zq(u'Zq(w'Zq(x'Zq)T'Zq)U'Zq)V'Zq)W'Zq)X'Zq)Y'Zq!g'Zq)j'Zq['Zq!W'Zq(v'Zq!U'ZqQ'Zq!d'Zq~O!V'Zq~P(5bO!V.}O&r#WO&s$wO~P(5bO!T$WO!V)rO(w)sO!U(UX!h(UX~P!JwO!h/nO!U)ra~O!W4xO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h*iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!U4|O~P&6yO!W4|O~P&6yO[4|O~P&6yO[5RO~P&6yO]5SO!h'ua)P'ua)Y'ua~O!h*OO)P)Ri)Y)Ri~O]&cO!V&bO[#Qq!T#Qq!h#Qq#v#Qq)X#Qq)j#QqQ#Qq!d#Qq(v#Qq~O[riQri!dri!hri)Yri)Xri~P#IkO]&cO!V+kO[riQri!dri!hri)Yri)Xri~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h'Tq)X'Tq!g'Tq)j'Tq['Tq!W'Tq(v'Tq!U'TqQ'Tq!d'Tq~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!W'|a!h'|a~P#3zO!W5XO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h5YO(u#gO)T#mO)U#oO)V#nO)W#pO)X#jO)Y#|O!U)rX~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h#{i)X#{i~P#3zO]*vO!T$WO!V&bO)j*rO!h(Va)X(Va~O!h1fO[)dX]'dX~P%2xO)Y5[O!T%qa!h%qa#v%qa)j%qa~O!h0sO!T)za#v)za)j)za~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X5_O)Y#|O~P#3zO]1SOe!POm;[O!V1QO!{!dO%v$mO(r$xO)T;xO)V5aO)W5aO~OQ#Pa!d#Pa!h#Pa[#Pa~P(DjO]1SOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V1QO!{!dO!|%RO%v$mO(r$xOQ#kX!d#kX!h#kX[#kX~Om%bO)T0zO)V;yO)W;yO~P(ElO]&cOQ#Pa!d#Pa!h#Pa[#Pa~O!V&bO)j5eO~P(GZO(r%nOQ#dX!d#dX!h#dX[#dX~O)V;yO)W;yOQ#nX!d#nX!h#nX[#nX~P' dO!V+kO~P(GZO]1SOb!TOe!POm;]O|#RO!V1QO!{!dO#a#VO#b#TO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO(r;QO)QYO)T;xO)V5aO)W5aO)Y+nO[)dP~P&?sO!h1TOQ)la!d)la~Oq&fO)j5jOQ#`am(}X!d#`a!h#`a)Y(}X~P$GQO(r-UOQ#ga!d#ga!h#ga~Oq&fO)j5jOQ#`a])^Xe)^Xm)^Xs)^Xt)^Xu)^Xv)^Xw)^Xx)^Xy)^Xz)^X!O)^X!T)^X!V)^X!d#`a!h#`a!l)^X!r)^X!s)^X!t)^X!u)^X!v)^X!x)^X!{)^X%v)^X&r)^X&s)^X(r)^X(v)^X)T)^X)V)^X)W)^X)Y)^X~O#a5mO#b5mO~O]&cO!V+kO[#ki!T#ki#v#ki)X#ki)j#kiQ#ki!d#ki!h#ki)Y#ki!x#ki(v#ki~O!W5oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W5oO~P!(zO!W5oO)T5qO~P$%pO]#ji!T#ji!V#ji[#ji#v#ji)X#ji)j#jiQ#ji!d#ji!h#ji)Y#ji!x#ji(v#ji~P$ xO)QYO)Y5sO~P8zO!h1fO[)da~O&r#WO&s$wO!T#qa!x#qa#v#qa(v#qa)j#qa[#qa!h#qa)X#qaQ#qa!d#qa)Y#qa~P#NeO[5xO~P!(zO[)oP~P!4xO)U6OO)V5|O]#Ua!T#Ua!V#Ua)T#Ua)W#Uas#Uat#Uau#Uav#Uaw#Uax#Uay#Uaz#Ua!l#Ua!x#Ua#T#Ua#V#Ua#p#Ua#v#Ua(v#Ua(x#Ua)j#Uab#Uae#Uam#Ua|#Ua!O#Ua!o#Ua!r#Ua!s#Ua!t#Ua!u#Ua!v#Ua!{#Ua#a#Ua#b#Ua#i#Ua#t#Ua${#Ua%c#Ua%e#Ua%k#Ua%l#Ua%o#Ua%v#Ua&m#Ua&r#Ua&s#Ua(r#Ua)Q#Ua)X#Ua[#Ua!h#UaQ#Ua!d#Ua~O!x!cO]#Rq!T#Rq!V#Rq#v#Rq(v#Rq)j#Rq[#Rq!h#Rq)X#RqQ#Rq!d#Rq~O!W6TO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W6TO~P!(zO!h1|OQ(za!d(za~O)X6YO~Om-eO!TxO)j6ZO~O]*vO!T$WO!V&bO!h*tO)X)qX~O)j6_O~P)+cO[6aO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[6aO~O$c6cOP$_q]$_qb$_qe$_qm$_qs$_qt$_qu$_qv$_qw$_qx$_qy$_qz$_q|$_q!O$_q!T$_q!V$_q!X$_q!Y$_q!i$_q!o$_q!r$_q!s$_q!t$_q!u$_q!v$_q!x$_q!{$_q#V$_q#a$_q#b$_q#i$_q#p$_q#t$_q#v$_q$R$_q$T$_q$Y$_q$Z$_q$`$_q$e$_q$g$_q$h$_q$k$_q$m$_q$o$_q$q$_q$s$_q$u$_q$w$_q${$_q$}$_q%U$_q%_$_q%`$_q%a$_q%c$_q%e$_q%g$_q%l$_q%o$_q%v$_q%|$_q&m$_q&r$_q&s$_q'Q$_q'R$_q'V$_q'Y$_q'a$_q'b$_q(k$_q(p$_q(r$_q)Q$_q)T$_q)V$_q)W$_q)X$_q)Y$_q)[$_q)h$_q)i$_q!U$_q~O)X6dO~OPmO]$eOb!]Om:{O|#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r:}O)T$kO)W$kO)X6fO)Y!ZO)[XO)hcO)idO~P&?sO(v6hO)j*rO~P)+cO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X6fO)Y#|O~P#3zO[6jO~P!(zO)X6nO~O)X6oO~O]-YOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!{!dO(r-UO)T-VO~O]&cO!V2uO!h%Oa)X%Oa[%Oa~O!W6uO)T6vO~P$%pO!h2vO)X)ua~O[6yO]&cO!V2uO~O!TxO$`!iO$e!jO$g!kO$h!lO$k-bO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(r:nOe$Xq!o$Xq!{$Xq#i$Xq#p$Xq#t$Xq#v$Xq$R$Xq$T$Xq$Y$Xq$Z$Xq${$Xq%U$Xq%c$Xq%g$Xq%o$Xq%|$Xq(k$Xq)V$Xq!U$Xq$c$Xq~P$0kOPmO]$eOb!]Om:{O|#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r:}O)QYO)T$kO)W$kO)X6{O)Y!ZO)[XO)hcO)idO~P&?sO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X7OO)Y#|O~P#3zO)X7PO~OP7QO(pQO~Om*[O)X)^X~P$GQOq&fOm(}X)X)^X~P$GQO)X7SO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O)X&Sa~P#3zO!U7UO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO)X7VO~OPmO]$eOb!]Om:|O|#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r;UO)QYO)T$kO)W$kO)Y0nO)[XO)hcO)idO[)dP~P&?sO!h3pO)Y7ZO!T)_a~O!h3pO!T)_a~O)X7`O)j7bO~P(&eO)X7dO~PGVO]3zOm({Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!{!dO!|%RO%v$mO&r#WO(r(zO)T3wO)V3{O)W3{O~O)T7hO~O]&cO!T*qO!V7jO!h7kO#v!eO(v4OO~O)X7`O)j7mO~P)FwO]3zOm({O!{!dO%v$mO&r#WO(r(zO)T3wO)V3{O)W3{O~Oq&fO])cX!T)cX!V)cX!h)cX#v)cX(v)cX)X)cX)j)cX[)cX~O)X7`O~O!T(QO!l7sO(v(PO])Oie)Oim)Ois)Oit)Oiu)Oiv)Oiw)Oix)Oiy)Oiz)Oi!O)Oi!V)Oi!r)Oi!s)Oi!t)Oi!u)Oi!v)Oi!x)Oi!{)Oi%v)Oi&r)Oi&s)Oi(r)Oi)T)Oi)V)Oi)W)Oi)X)Oi[)Oi!X)Oi!Y)Oi![)Oi!^)Oi!_)Oi!a)Oi!b)Oi!c)Oi!e)Oi!f)Oi!h)Oi(u)Oi(w)Oi(x)Oi)U)Oi)Y)Oi!g)Oi)j)Oi!W)OiQ)Oi!d)Oi!U)Oi#v)Oi~O(r%nO!U(fX!h(fX~O!h4XO!U*Qa~Oq&fO]*Pae*Pam*Pas*Pat*Pau*Pav*Paw*Pax*Pay*Paz*Pa!O*Pa!T*Pa!V*Pa!r*Pa!s*Pa!t*Pa!u*Pa!v*Pa!x*Pa!{*Pa%v*Pa&r*Pa&s*Pa(r*Pa)T*Pa)V*Pa)W*Pa)X*Pa[*Pa!X*Pa!Y*Pa![*Pa!^*Pa!_*Pa!a*Pa!b*Pa!c*Pa!e*Pa!f*Pa!h*Pa(u*Pa(w*Pa(x*Pa)U*Pa)Y*Pa!g*Pa)j*Pa!W*PaQ*Pa!d*Pa(v*Pa!U*Pa#v*Pa~O!T(ZO]&kqe&kqm&kqs&kqt&kqu&kqv&kqw&kqx&kqy&kqz&kq!O&kq!V&kq!r&kq!s&kq!t&kq!u&kq!v&kq!x&kq!{&kq%v&kq&r&kq&s&kq(r&kq)T&kq)V&kq)W&kq)X&kq[&kq!X&kq!Y&kq![&kq!^&kq!_&kq!a&kq!b&kq!c&kq!e&kq!f&kq!h&kq(u&kq(w&kq(x&kq)U&kq)Y&kq!g&kq)j&kq!W&kqQ&kq!d&kq(v&kq!U&kq#v&kq~OPmOb%QOm:zO!T$WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(pQO(r$xO)[XO)hcO)idO~O]*Ui!V*Ui!X*Ui!Y*Ui![*Ui!^*Ui!_*Ui!a*Ui!b*Ui!c*Ui!e*Ui!f*Ui!h*Ui(u*Ui(w*Ui(x*Ui)T*Ui)U*Ui)V*Ui)W*Ui)X*Ui)Y*Ui!g*Ui)j*Ui[*Ui!W*Ui(v*Ui!U*UiQ*Ui!d*Ui~P*&WO[7xO~O!W7yO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h'^q)X'^q!g'^q)j'^q['^q!W'^q(v'^q!U'^qQ'^q!d'^q~P#3zO!h7zO[*YX~O[7|O~O*W7}O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h_y)X_y!g_y)j_y[_y!W_y(v_y!U_yQ_y!d_y~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O[(ha!h(ha~P#3zO]#}O!T$WO!V'Zy!X'Zy!Y'Zy!['Zy!^'Zy!_'Zy!a'Zy!b'Zy!c'Zy!e'Zy!f'Zy!h'Zy(u'Zy(w'Zy(x'Zy)T'Zy)U'Zy)V'Zy)W'Zy)X'Zy)Y'Zy!g'Zy)j'Zy['Zy!W'Zy(v'Zy!U'ZyQ'Zy!d'Zy~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!h'^y)X'^y!g'^y)j'^y['^y!W'^y(v'^y!U'^yQ'^y!d'^y~P#3zO]&cO!V+kO!T%uy#v%uy)X%uy)j%uy~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!U(Ua!h(Ua~P#3zO!W4xO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!U#}i!h#}i~P#3zO!U8PO~P&6yO!W8PO~P&6yO[8PO~P&6yO[8RO~P&6yO]&cO!V&bO[#Qy!T#Qy!h#Qy#v#Qy)X#Qy)j#QyQ#Qy!d#Qy(v#Qy~O]&cO!V+kO[rqQrq!drq!hrq)Yrq)Xrq~O]&cOQ#Pi!d#Pi!h#Pi[#Pi~O!V+kO~P*9jOQ#nX!d#nX!h#nX[#nX~P(DjO!V&bO~P*9jOQ(OX](OXe'qXm'qXs(OXt(OXu(OXv(OXw(OXx(OXy(OXz(OX!V(OX!d(OX!h(OX!{'qX%v'qX(r'qX)T(OX)V(OX)W(OX[(OX~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|OQ#_i!d#_i!h#_i[#_i~P#3zO&r#WO&s$wOQ#fi!d#fi!h#fi~O(r-UO)Y1YO)j1XOQ#`X!d#`X!h#`X~O!W8WO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W8WO~P!(zO!T#qi!x#qi#v#qi(v#qi)j#qi[#qi!h#qi)X#qiQ#qi!d#qi)Y#qi~O]&cO!V+kO~P*?fO]&YO!V&WO&r#WO&s$wO)T&VO)V&ZO)W&ZO~P*?fO[8YO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!h8ZO[)oX~O[8]O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|OQ*TX!d*TX!h*TX~P#3zO)Y8`OQ*SX!d*SX!h*SX~O)X8bO~O[$bi!h#{a)X#{a~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X8eO)Y#|O~P#3zO[8gO~P!(zO[8gO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[8gO~O]&cO!V&bO(v8mO~O)X8nO~O]&cO!V2uO!h%Oi)X%Oi[%Oi~O!W8qO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W8qO)T8sO~P$%pO!W8qO~P!(zO]&cO!V2uO!h(Ya)X(Ya~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)X8tO)Y#|O~P#3zO)X2iO~P!(zO)X8tO~OP%oO[8uO(pQO~O[8uO~O)X8vO~P%%eO#T8yO(x.PO)X8wO~O!h3pO!T)_i~O)Y8}O!T'wa!h'wa~O)X9PO)j9RO~P)FwO)X9PO~O)X9PO)j9VO~P(&eOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~P)GgO]&cO!V7jO!T!ya!h!ya#v!ya(v!ya)X!ya)j!ya[!ya~O!W9^O)T9_O~P$%pO!T$WO!h7kO(v4OO)X9PO)j9VO~O!T$WO~P#EfO[9bO]&cO!V7jO~O]&cO!V7jO!T&aa!h&aa#v&aa(v&aa)X&aa)j&aa[&aa~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O)X&ba~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X9PO)Y#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!U&oi!h&oi~P#3zO!V.}O]']i!T']i!X']i!Y']i![']i!^']i!_']i!a']i!b']i!c']i!e']i!f']i!h']i(u']i(w']i(x']i)T']i)U']i)V']i)W']i)X']i)Y']i!g']i)j']i[']i!W']i(v']i!U']iQ']i!d']i~O(r%nO)Y9eO~O!h7zO[*Ya~O[9gO~P&6yO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O!U(Ua)X#Zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|OQ#_q!d#_q!h#_q[#_q~P#3zO&r#WO&s$wOQ#fq!d#fq!h#fq~O)j5jOQ#`a!d#`a!h#`a~O]&cO!V+kO!T#qq!x#qq#v#qq(v#qq)j#qq[#qq!h#qq)X#qqQ#qq!d#qq)Y#qq~O!h8ZO[)oa~O)V5|O]&Vi!T&Vi!V&Vi)T&Vi)U&Vi)W&Vis&Vit&Viu&Viv&Viw&Vix&Viy&Viz&Vi!l&Vi!x&Vi#T&Vi#V&Vi#p&Vi#v&Vi(v&Vi(x&Vi)j&Vib&Vie&Vim&Vi|&Vi!O&Vi!o&Vi!r&Vi!s&Vi!t&Vi!u&Vi!v&Vi!{&Vi#a&Vi#b&Vi#i&Vi#t&Vi${&Vi%c&Vi%e&Vi%k&Vi%l&Vi%o&Vi%v&Vi&m&Vi&r&Vi&s&Vi(r&Vi)Q&Vi)X&Vi[&Vi!h&ViQ&Vi!d&Vi~O)X9jO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O[$bq!h#{i)X#{i~P#3zO[9lO~P!(zO[9lO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[9lO~O]&cO!V&bO(v9oO~O[9pO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[9pO~O]&cO!V2uO!h%Oq)X%Oq[%Oq~O!W9tO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W9tO~P!(zO)X6fO~P!(zO)X9uO~O)X9vO~O(x.PO)X9vO~O!h3pO!T)_q~O)Y9xO!T'wi!h'wi~O!T$WO!h7kO(v4OO)X9yO)j9{O~O)X9yO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X9yO)Y#|O~P#3zO)X9yO)j:OO~P)FwO]&cO!V7jO!T!yi!h!yi#v!yi(v!yi)X!yi)j!yi[!yi~O!W:SO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W:SO)T:UO~P$%pO!W:SO~P!(zO]&cO!V7jO!T(da!h(da(v(da)X(da)j(da~O[:WO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[:WO~O[:]O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[:]O~O]&cO!V2uO!h%Oy)X%Oy[%Oy~O)X:^O~O)X:_O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X:_O)Y#|O~P#3zO!T$WO!h7kO(v4OO)X:_O)j:bO~O]&cO!V7jO!T!yq!h!yq#v!yq(v!yq)X!yq)j!yq[!yq~O!W:dO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO!W:dO~P!(zO[:fO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)Y#|O~P#3zO[:fO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X:hO)Y#|O~P#3zO)X:hO~O]&cO!V7jO!T!yy!h!yy#v!yy(v!yy)X!yy)j!yy[!yy~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)T#mO)U#oO)V#nO)W#pO)X:lO)Y#|O~P#3zO)X:lO~O]ZXmhXqZXqjX!TjX!VZX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX(uZX(v$]X(wZX(xZX)TZX)UZX)VZX)WZX)XZX)YZX)jZX~O]%WXmnXqoXq%WX!ToX!V%WX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!c%WX!e%WX!f%WX!gnX!h%WX(u%WX(w%WX(x%WX)T%WX)U%WX)V%WX)W%WX)Y%WX)jnX[%WXQ%WX!d%WX~O)X%WX!W%WX(v%WX!U%WX~P+GrO]oX]%WXeoXmnXqoXq%WXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!VoX!V%WX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(roX)ToX)VoX)WoX[oX[%WX!hoX)YoX~O)XoX)joX~P+JSO]%WXmnXqoXq%WX!V%WX!h%WXQ%WX!d%WX[%WX~O!T%WX#v%WX)X%WX)j%WX(v%WX~P+LmOQoXQ%WX!ToX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!c%WX!doX!d%WX!e%WX!f%WX!gnX!h%WX(u%WX(w%WX(x%WX)T%WX)U%WX)V%WX)W%WX)Y%WX)jnX~P+JSO]oX]%WXmnXqoXq%WXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!V%WX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(roX)ToX)VoX)WoX~O!ToX(voX)XoX)joX~P, eOeoX!VoX)X%WX~P, eOmnXqoX)X%WX~Oe)oO%Y)pO(y:oO~Oe)oO%Y)pO(y:tO~Oe)oO%Y)pO(y:pO~Oe$RO%Y*TO'[$TO'_$UO(y:oO~Oe$RO%Y*TO'[$TO'_$UO(y:qO~Oe$RO%Y*TO'[$TO'_$UO(y:sO~O[jX]jXsjXtjXujXvjXwjXxjXyjXzjX!VjX&rjX&sjX)TjX)VjX)WjXejX!OjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX(rjX~P#1jO]ZXmhXqZXqjX!VZX!hZX)XZX)jZX~O!TZX#vZX(vZX~P,'{OmhXqjX)QjX)XZX)jjX~O]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VZX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(rjX)TjX)VjX)WjX[ZX[jX!hjX)YjX)jjX~O)XZX~P,)VO]ZX]jXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!TjX!VZX!VjX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX!hjX&rjX&sjX(uZX(wZX(xZX)TZX)TjX)UZX)VZX)VjX)WZX)WjX)YZX)YjX)jZX~OQZXQjX!dZX!djX~P,+pO]jXejXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(rjX)TjX)VjX)WjX~P#1jO]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VZX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(rjX)TjX)VjX)WjX~O)XjX~P,0rO[ZX[jXejX!OjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX(rjX)jjX~P,+pO]ZX]jXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!TjX!VZX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(rjX(vjX)TjX)VjX)WjX)XjX)jjX~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~PBUOe$RO%Y*TO(y:oO~Oe$RO%Y*TO(y:pO~Oe$RO%Y*TO(y:vO~Oe$RO%Y*TO(y:uO~O]%hOe!POm%bOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V%kO!{!dO!|%RO%v$mO(r$xO)T;aO)V;bO)W;bO~O]%hOe!POm%bO!V%kO!{!dO%v$mO(r$xO)T;aO)V;bO)W;bO~Oe$RO%Y$SO(y:pO~Oe$RO%Y$SO(y:tO~Om:yO~Om:xO~O]dXmhXqjX!TdX~Oe)oO%Y*TO(y:oO~Oe)oO%Y*TO(y:pO~Oe)oO%Y*TO(y:qO~Oe)oO%Y*TO(y:rO~Oe)oO%Y*TO(y:sO~Oe)oO%Y*TO(y:uO~Oe)oO%Y*TO(y:vO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~P,9OO](}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}Xz(}X!O(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)T(}X)V(}X)W(}X)j(}X~Om:xO!T(}X(v(}X)X(}X~P,<}O]&wXmnXqoX!T&wX~Oe4kO%Y*TO(y;tO~Om;[O)T;xO)V5aO)W5aO~P(ElOe!POm%bO!{!dO%v$mO(r$xO~O]1SO!V1QO)T0zO)V;yO)W;yOQ#nX!d#nX!h#nX[#nX~P,?yO)T;YO~Om;hO~Om;iO~Om;jO~Om;lO~Om;mO~Om;nO~Om;lO!T$WOQ(}X!d(}X!h(}X)Y(}X[(}X)j(}X~P$GQOm;jO!T$WO~P$GQOm;hO!g$YO)j$YO~Om;jO!g$YO)j$YO~Om;lO!g$YO)j$YO~Om;iO[(}X!h(}X)Y(}X)j(}X~P$GQOe/^O%Y*TO(y;tO~Om;uO~O)T<YO~OV'e'h'i'g(p)[!R(rST%Z!Y!['je%[!i'R!f]'f*Z'k(w!^!_'l'm'l~",
26520
- goto: "%5]*ZPPPPPP*[P*_PP.TPP4i7j7j:tP:t>OP>i>{?aFXMX!&]!,sP!3m!4b!5VP!5qPPPPPPPP!6[P!7tP!9V!:oP!:uPPPPPP!:xP!:xPP!:xPPPPPPPPP!;U!>lP!>oPP!?]!@QPPPPP!@UP>l!AgPP>l!Cn!Eo!E}!Gd!ITP!I`P!Io!Io!MP#!`##v#'S#*^!Eo#*hPP!Eo#*o#*u#*h#*h#*xP#*|#+k#+k#+k#+k!ITP#,U#,g#.|P#/bP#0}P#1R#1Z#2O#2Z#4i#4q#4q#1RP#1RP#4x#5OP#5YPP#5u#6d#7U#5uP#7v#8SP#5uP#5uPP#5u#5uP#5uP#5uP#5uP#5uP#5uP#5uP#8V#5Y#8sP#9YP#9o#9o#9o#9o#9|#1RP#:d#?`#?}PPPPPPPP#@uP#ATP#ATP#Aa#Dn#9OPP#@}#EQP#Ee#Ep#Ev#Ev#@}#FlP#1R#1R#1R#1R#1RP!Io#GW#G_#G_#G_#Gc!Ly#Gm!Ly#Gq!E}!E}!E}#Gt#L^!E}>l>l>l$#V!@Q!@Q!@Q!@Q!@Q!@Q!6[!6[!6[$#jP$%V$%e!6[$%kPP!6[$'y$'|#@l$(P:t7j$+V$-Q$.q$0a7jPP7j$2T7jP7j7jP7jP$5Z7jP7jPP7j$5gPPPPPPPPP*[P$8o$8u$;^$=d$=j$>Q$>[$>g$>v$>|$@[$AZ$Ab$Ai$Ao$Aw$BR$BX$Bd$Bj$Bs$B{$CW$C^$Ch$Cn$Cx$DP$D`$Df$DlP$Dr$Dz$ER$Ea$F}$GT$GZ$Gb$GkPPPPPPPP$Gq$GuPPPPP$Nw$'y$Nz%$S%&[PP%&i%&lPPPPPPPPP%&x%'{%(R%(V%)|%+Z%+|%,T%.d%.jPPP%.t%/P%/S%/Y%0a%0d%0n%0x%0|%2Q%2s%2y#@uP%3d%3t%3w%4X%4e%4i%4o%4u$'y$'|$'|%4x%4{P%5V%5YR#cP'`mO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fU%om%p7QQ&m!`Q(j#]d0P)}/|/}0O0R4}5O5P5S8QR7Q3Tb}Oaewx{!g&S*q&v$i[!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0{1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fS%`f0h#d%jgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<YS%qm!YS&u!h#PQ']!tQ'g!yQ'h!zQ(j#`Q(k#]Q(l#^Q*x%kQ,W&lQ,]&nQ-S'^Q-d'fQ-k'qS.r(Z4XQ/f)gQ0e*mQ2Q,[Q2X,cQ3O-eQ4b.|Q4f/TQ5f0}Q6[2TQ6}3PQ8a6ZQ9e7zR;Z1Q$|#hS!]$y%Q%T%Z&j&k'Q'X'Z'a'c(a(e(h(w(x)R)S)T)U)V)W)X)Y)Z)[)])^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:iQ&p!dQ(g#ZQ(s#bQ)j$T[*s%e*W0k2`2g2{Q,^&oQ/O(fQ/S(kQ/Z(tS/i)i/PQ0r+QS4q/j/kR8O4r'a![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f'a!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ)O#kS+Q%y0sQ/r)sk3}.g3s3w3z3{7c7e7f7h7k9X9Y:RQ)Q#kk3|.g3s3w3z3{7c7e7f7h7k9X9Y:Rl)P#k.g3s3w3z3{7c7e7f7h7k9X9Y:RT+Q%y0s[UOwx!g&S*qW$`[e$e(b#l$p_!f!u!}#R#S#T#U#V#Z$S$T$l%U&U&Y&c&m'_'}(P(U(^(g)j)p+[+a+b+t+y,X,k,z-Q-o-t.W.X._.`.d.q.u1T1X1f1k1m2l3[3]3^3p3t5j5}6P7[8Z![%cg$g%d%i&s*Y*t+],l,v-_0z1O2_;W;X;Y;a;b;o;p;q;r;v;w;y<W<X<YY%snp%w-p.fl(|#k.g3s3w3z3{7c7e7f7h7k9X9Y:RS;e't-wU;f(Q.m.o&|;{af{|!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k$|$}%S%]%h%m&Q&W&b&y&|'O'i'j'u'y(`(i)l)r*`*b*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0]0h0y0{1Q1a1b1l1p1z2c2i2j2u4O4R4W4a5Y5a5e5q6_6c6f6g6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f;`;xQ;|1Sd;}&x'P'b,w-]-^-a2f2z2}W<O&f*v1|3iQ<P#O[<Q!t'^'f,[2T6ZT<]%y0s[VOwx!g&S*qW$a[e$e(bQ$p.u!j$q_!f!u!}#V#Z$S$T$l%U&U&Y&c&m'_(g)j)p+[+a+t,X,k,z-Q-o.d1T1X1f1k1m2l3t5j8Z&^$zaf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f![%cg$g%d%i&s*Y*t+],l,v-_0z1O2_;W;X;Y;a;b;o;p;q;r;v;w;y<W<X<YY%snp%w-p.fQ'r#O|'|#R#S#T#U'}(P(U(^+b+y.W.X._.`.q3[3]3^3p5}6P7[l(|#k.g3s3w3z3{7c7e7f7h7k9X9Y:RS-n't-wQ3W-tU;s(Q.m.on;{|$|$}%S%h'u*`*b0]0y2j5a6g;`;x[<Q!t'^'f,[2T6ZW<R&f*v1|3id<S&x'P'b,w-]-^-a2f2z2}Q<Z1ST<]%y0s!Q!UO[ewx!g$e&S&f&x'P'b(b*q*v,w-]-^-a1|2f2z2}3i!v$t_!f!u!}#O#V#Z$S$T$l%U&U&Y&c&m'_'t(Q(g)j)p+[+t,X,k,z-Q-o-w.d.m.o1S1T1X1f1k1m2l3t5j8Z&^%Paf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f$Q%lgnp|#k$g$|$}%S%d%h%i%w%y&s'^'f'u*Y*`*b*t+],[,l,v-_-p.f.g0]0s0y0z1O2T2_2j3s3w3z3{5a6Z6g7c7e7f7h7k9X9Y:R;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<YQ'[!tz(O#R#S#T#U'}(P(U(^+y.W.X._.`.q3[3]3^3p5}6P7[f-Z'`-T-V-Y2p2q2s2v6q6r8pQ1W+aQ1Z+bQ2k,yQ3X-tQ4[.uQ5l1YR8V5m!Q!UO[ewx!g$e&S&f&x'P'b(b*q*v,w-]-^-a1|2f2z2}3i!x$t_!f!u!}#O#V#Z$S$T$l%U&U&Y&c&m'_'t(Q(g)j)p+[+a+t,X,k,z-Q-o-w.d.m.o1S1T1X1f1k1m2l3t5j8Z&^%Paf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f$S%lgnp|!t#k$g$|$}%S%d%h%i%w%y&s'^'f'u*Y*`*b*t+],[,l,v-_-p.f.g0]0s0y0z1O2T2_2j3s3w3z3{5a6Z6g7c7e7f7h7k9X9Y:R;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<Y|(O#R#S#T#U'}(P(U(^+b+y.W.X._.`.q3[3]3^3p5}6P7[Q3X-tR4[.u[WOwx!g&S*qW$b[e$e(b#l$p_!f!u!}#R#S#T#U#V#Z$S$T$l%U&U&Y&c&m'_'}(P(U(^(g)j)p+[+a+b+t+y,X,k,z-Q-o-t.W.X._.`.d.q.u1T1X1f1k1m2l3[3]3^3p3t5j5}6P7[8Z![%cg$g%d%i&s*Y*t+],l,v-_0z1O2_;W;X;Y;a;b;o;p;q;r;v;w;y<W<X<YY%snp%w-p.fl(|#k.g3s3w3z3{7c7e7f7h7k9X9Y:RS;e't-wU;f(Q.m.on;{|$|$}%S%h'u*`*b0]0y2j5a6g;`;xQ;|1SQ<P#O[<Q!t'^'f,[2T6Z&^<Taf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fd<U&x'P'b,w-]-^-a2f2z2}W<V&f*v1|3iT<]%y0sp$PT$_$o%b%r({:z:{:|;[;];^;_;c;d<[o)m$V*U*[/_:w:x:y;h;i;j;k;l;m;n;up$QT$_$o%b%r({:z:{:|;[;];^;_;c;d<[o)n$V*U*[/_:w:x:y;h;i;j;k;l;m;n;u^&e}!O$i$j%`%j;Zd&i!U$t%P%l'[(O1W1Z3X4[V/a)O)P3}S%Ye$eQ,T&fQ.{(bQ2m-QQ5y1mQ6V1|Q6m2lR9h8Z#}!TO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o1S1T1X1f1k1m1|2f2l2z2}3i3t5j8Z#[^O[_`wx!f!g!}#O$S$d$l$s$u&S&U&Y&c&m&r&x'P'b't(Q)p*]*q*v+[,X,k,w,z-]-^-a-o-t-w.d.m.o1S1T1f2f2z2}3i3t_(U#R#S#T+b3[3]3^#}ZO[wx!g!k#R#S#T%m&S&U&Y&c&m&w&x&y&|'O'P'['b't'x'}(P(Q(U*q*v+[+b,X,h,k,q-P-]-^-a-o-t-w-z._.d.m.q1S1T1f2c2k2z2}3[3]3^3i6c6j8g9l9p:W:]:fQ$]YR0T*OR*Q$]e0P)}/|/}0O0R4}5O5P5S8Q'`!YO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fe0P)}/|/}0O0R4}5O5P5S8QR5T0T^(T#R#S#T+b3[3]3^Y.]'}(R(U(V7TU3k.Z.^.qS7X3l4VR9c7s^(S#R#S#T+b3[3]3^[.['}(R(T(U(V7TW3j.Z.].^.qU7W3k3l4VS8z7X7sR:V9cT.k(Q.md]Owx!g&S't(Q*q-w.m!v^[_`!f!}#O$S$d$l$s$u&U&Y&c&m&r&x'P'b)p*]*v+[,X,k,w,z-]-^-a-o-t.d.o1S1T1f2f2z2}3i3tQ%tnT1u+}1v!jbOaenpwx{|!g#O$|$}%S%h%w&S't'u(Q*`*b*q-p-w.f.m.o0]0y1S2j5a6g;`;xf-W'`-T-V-Y2p2q2s2v6q6r8pj3x.g3s3w3z3{7c7e7f7h7k9X9Y:Rr;zg$g%d%i&s*Y*t,l,v-_2_;W;X;Y;o;q;vi<^+]0z1O;a;b;p;r;w;y<W<X<Y!O&^y%X&V&Y&Z'k)h*d*f+]+e+x/m0^0y0z1O1S1j5a5v;x;yz&az%O%W%e&d's*W*_,b-x0Z0[0k0|2`2g2{5V5b6l8iS'{#Q.Xn+l&X*g+f+m+p-j/h0_1R1^4t5W5`5u8XQ2W,a^2t-X2r2x6p6w8o9se7i3y7_7g7o7p9U9W9`:Q:cS+^&U1TY+n&Y&c*v1S3iR5s1f#w!POaegnpwx{|!g#O$g$|$}%S%d%h%i%w&S&s't'u(Q*Y*`*b*q*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<Y`oOwx!g&S't*q-w#U!Paeg{|#O$g$|$}%S%d%h%i&s'u*Y*`*b*t+],l,v-_0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<YU%vnp-pQ*}%wS.e(Q.mT3v.f.oW+r&^+l+s1cV+z&a+{7iQ+x&`U+z&a+{7iQ-w'tT.S'y.U'`![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fX1r+y.X5}6P'W!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fW1r+y.X5}6PR2e,s!WjO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fY%Ve$e(b1p3iQ'S!nS(y#i5YQ,m&xQ,x'PS.O'y.UQ2b,nQ6k2iQ6|2}Q8h6fR9m8e'W![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fX1r+y.X5}6P'ayO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k+y,P,R,n,q,w-]-^-a-g.P.Q.U.X.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q5}6P6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ&`yS't#O-uR1[+cS+^&U1TR5n1[Q1P+]R5g1OR1P+]T+^&U1Tz&[%X&V&Y&Z'k)h*d*f+]+e/m0^0y0z1O1S1j5a5v;x;yQ&]yR1n+x!P&[y%X&V&Y&Z'k)h*d*f+]+e+x/m0^0y0z1O1S1j5a5v;x;yQ+u&^S+|&a7iS1d+l+sQ1t+{R5r1c!WkO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fS%zo.eS&Oq-rQ&_yQ&q!eQ'e!yQ*p%eU*{%v%{3vS+P%x%}Q+q&]Q,Y&mS,Z&n'gQ,r&{S0X*W,bS0o*|*}Q0q+OQ1o+xS2S,]-fQ5U0ZQ5Z0pQ5{1nQ6Y2RQ6]2WQ7n3yQ9S7_R:P9U[uOwx!g&S*qQ,Y&mQ-v'tQ3Y-tR3_-wxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fU$h[&|-^S%zo.eS&Oq-rQ*p%eU*{%v%{3vS+P%x%}S0X*W,bS0o*|*}Q0q+OQ5U0ZQ5Z0pQ7n3yQ9S7_R:P9UT,_&q,`]uOwx!g&S*q[uOwx!g&S*qQ,Y&mQ,n&xQ,w'PW-`'b-]-a2zQ-v'tQ3Y-tQ3_-wR6{2}[%fg$g,l,v-_2_R0l*t^$XV!U$a$z%P<R<SQ'S!nS)`#}*vS)v$W*qQ)y$YY*s%e*W0k2g2{Q/O(fS/i)i/PS0a*h4aS0j*r6_Q0r+QQ4Q.gQ4n/cS4q/j/kS4v/n5YQ4{/uQ6`2`U7a3s3y4RQ8O4rQ8k6hY9Q7_7b7c7l7mQ9r8mW9z9O9R9U9VQ:Z9oU:a9{9}:OR:j:bS)v$W*qT4v/n5YZ)t$W)u*q/n5YQ&w!hR'x#PS,g&v'vQ2[,eR6^2ZxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fV$h[&|-^!XkO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:f!WhO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fR'W!q!WkO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fR,n&xQ&y!iQ&{!jQ'O!lR,q&zR,o&xxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fX-`'b-]-a2z[uOwx!g&S*qQ,z'PQ-v'tS.k(Q.mR3_-w[uOwx!g&S*qQ,z'PW-`'b-]-a2zT.k(Q.mg-Z'`-T-V-Y2p2q2s2v6q6r8pylOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fb!OOaewx{!g&S*q&|$j[f!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f#d%jgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<YQ']!tQ-S'^Q-d'fQ2Q,[Q6[2TR8a6Zj$RT$_%b%r:z:{:|;[;];^;_;c;di)o$V*U:w:x:y;h;i;j;k;l;m;nj$RT$_%b%r:z:{:|;[;];^;_;c;dh)o$V*U:w:x:y;h;i;j;k;l;m;nS/^({<[V4k/_/`;u[uOwx!g&S*qQ-v'tR3_-w[uOwx!g&S*qT.k(Q.m'`!YO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fR7R3T[uOwx!g&S*qQ-v'tS.k(Q.mR3_-w[pOwx!g&S*qQ%wnS-p't-wT.f(Q.mS%{o.eS*|%v3vR0p*}Q+R%yR5]0sS%zo.eS&Oq-rU*{%v%{3vS+P%x%}S0o*|*}Q0q+OQ5Z0pQ7n3yQ9S7_R:P9U`qOwx!g&S(Q*q.mS%xn-pU%}p.f.oQ+O%wT-r't-wS'z#Q.XR.Y'{T.R'y.US.S'y.UQ8x7UR9w8yT5}1q8_R6P1q#d!Pgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<Yb!QOaewx{!g&S*q&}![[f!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f#d!Pgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y<W<X<Yb!QOaewx{!g&S*q&|![[f!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fk3|.g3s3w3z3{7c7e7f7h7k9X9Y:RQ4Q.gS7a3s3yU9Q7_7c7lS9z9O9UR:a9}#|!TO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o1S1T1X1f1k1m1|2f2l2z2}3i3t5j8ZR4].uQ(]#US.v([(^S4^.w.xR7w4_Q.s(ZR7u4X#|!TO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o1S1T1X1f1k1m1|2f2l2z2}3i3t5j8Zp$w`$d$s%X&r'`(_(f)i*d-T/k1j5k5v8Uq(}#k%y.g0s3s3w3z3{7c7e7f7h7k9X9Y:RR,U&fR6W1|'X!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f$q#rS%T%Z'Q'X'Z'a'c(a(e(h(w(x)R)S)U)V)W)X)Y)Z)[)])^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i$]#sS%T%Z'Q'X'Z'a'c(h(w(x)R)V)^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i$Z#tS%T%Z'Q'X'Z'a'c(h(w(x)R)^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i$c#wS%T%Z'Q'X'Z'a'c(h(w(x)R)U)V)W)X)^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i'X![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ/P(fQ/j)iQ4r/kR9d7y']![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ#eQR(u#eU$|a;`;xb%Ue$e&f(b-Q1m1|2l8ZQ'_!u!Q*^$|%U'_*`*f+h,P0]0^1b2p6q6t7e8p9X9]:R;W;o;p;v;w<WS*`$}%SQ*f%XS+h&W1QQ,P&bQ0]*bQ0^*dQ1b+kQ2p-VS6q2q2sQ6t2uQ7e3wQ8p6rS9X7f7hQ9]7jQ:R9YQ;W%dS;o;X;YS;p<X<YQ;v;qQ;w;rT<W0z;a[[Owx!g&S*ql$c[&|'}+[,X,h,k-P-^-o-z._.d.ql&|!k%m&y'O,q2c6c6j8g9l9p:W:]:f^'}#R#S#T+b3[3]3^`+[&U&Y&c*v1S1T1f3iS,X&m-tQ,h&wU,k&x'P2}S-P'[2kW-^'b-]-a2zS-o't-wQ-z'xQ._(PS.d(Q.mR.q(UQ)|$[R/x)|Q0R)}Q4}/|Q5O/}Q5P0OY5Q0R4}5O5P8QR8Q5SQ*P$]S0U*P0VR0V*QS.`(P._S3n.`7[R7[3pQ3q.aS7Y3o3rU7^3q7Y8{R8{7ZQ.m(QR4S.m!|_O[wx!f!g!}#O$S$l&S&U&Y&c&m&x'P'b't(Q)p*q*v+[,X,k,w,z-]-^-a-o-t-w.d.m.o1S1T1f2f2z2}3i3tU$r_$u*]U$u`$d&rR*]$sU$}a;`;xd*a$}*b2q6r7f9Y;X;q;r<XQ*b%SQ2q-VQ6r2sQ7f3wQ9Y7hQ;X%dQ;q;YQ;r<YT<X0z;aS+{&a7iR1s+{S*j%Z/pR0c*jQ1U+_R5i1UU+e&V0z;xR1]+eQ+s&^Q1c+lT1i+s1cQ8[5yR9i8[QwOS&Rw&ST&Sx*qQ,`&qR2V,`W)u$W*q/n5YR/t)uU/o)q)v0gR4w/o[*u%e%f*W2`2g2{R0m*uQ,d&uR2Y,dQ-a'bQ2z-]T2|-a2zQ2w-XR6x2wQ-f'gQ2R,]T3Q-f2RS%pm7QR*z%pdnOwx!g&S't(Q*q-w.mR%unQ0t+RR5^0tQ.U'yR3f.UQ1v+}R6Q1vU*n%`*x;ZR0f*nS1g+n0nR5t1gQ7l3yQ9O7_U9a7l9O9}R9}9U$O!SO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o.u1S1T1X1f1k1m1|2f2l2z2}3i3t5j8ZR&g!SQ4Y.sR7v4YQ1},UR6X1}S/d)_)`R4o/dW(o#a(j(k/SR/W(oQ7{4fR9f7{T)a#}*v!USO[wx!g!k%m&S&y&|'O'b,q-]-^-a2c2z6c6j8g9l9p:W:]:fj$ya{$k%]+j,R1a1z5q6v8s9_:UY%Te$e(b1p3iY%Zf$f(i)l*lQ&j!WQ&k!XQ'Q!nQ'X!rQ'Z!sQ'a!vQ'c!xQ(a#XQ(e#YS(h#[+YQ(w#gQ(x#iQ)R#lQ)S#qQ)T#rQ)U#sQ)V#tQ)W#uQ)X#vQ)Y#wQ)Z#xQ)[#yQ)]#zQ)^#{S)_#}*vQ)k$UQ)q$WQ)x$YQ+X&QS+g&W1QQ,O&bQ,S&fQ,j&xQ,u'PQ-h'iQ-i'jS-|'y.UQ.y(`S/p)r0hS0`*h4aQ0b*iQ0g*qQ0i*rQ0w+WS1`+h+kQ1y,PQ2a,nS2h,w6{Q3R-gQ3c.PQ3d.QQ4c.}Q4d/QQ4j/[Q4m/cQ4s/lQ4u/nQ4y/sQ4z/uQ5d0{Q5p1bQ5w1lQ6U1|S6e2f8tQ6i2iQ6s2uQ6z2}Q7q4OQ7r4RQ7t4WQ8S5YQ8T5eQ8c6_Q8f6fQ8j6hQ8r6tS9T7b7mQ9[7jQ9k8eQ9q8mS9|9R9VQ:T9]Q:Y9oS:`9{:OR:i:bR,V&fd]Owx!g&S't(Q*q-w.m!v^[_`!f!}#O$S$d$l$s$u&U&Y&c&m&r&x'P'b)p*]*v+[,X,k,w,z-]-^-a-o-t.d.o1S1T1f2f2z2}3i3t#r${ae!u$e$|$}%S%U%X%d&W&b&f'_(b*`*b*d*f+h+k,P-Q-V0]0^1Q1b1m1|2l2p2q2s2u3w6q6r6t7e7f7h7j8Z8p9X9Y9]:R;W;X;Y;`;a;o;p;q;r;v;w<W<X<YQ%tnS+d&V+eW+r&^+l+s1cU+z&a+{7iQ1k+tT5c0z;x``Owx!g&S't*q-wS$d[-oQ$s_b%Xe$e&f(b-Q1m1|2l8Z!h&r!f!}#O$S$l&U&Y&c&m&x'P'b(Q)p*v+[,X,k,w,z-]-^-a-t.d.m.o1S1T1f2f2z2}3i3tQ'`!uS(_#V+aQ(f#ZS)i$T(gQ*d%UQ-T'_Q/k)jQ1j+tQ5k1XQ5v1kR8U5jS(W#R3]S(X#S3^V(Y#T+b3[R$^Ye0Q)}/|/}0O0R4}5O5P5S8QW(R#R#S#T+bQ([#US.Z'}(US.a(P._Q.x(^W1r+y.X5}6PQ3Z-tQ3h.WQ3o.`Q4V.qU7T3[3]3^Q7]3pR8|7[Q.b(PR3m._T.l(Q.mdgOwx!g&S&m't*q-t-wU$g[,X-oQ&s!fQ'k!}Q'u#OQ)h$SQ*Y$l`+]&U&Y&c*v1S1T1f3iQ,l&xQ,v'PY-_'b-]-a2z2}S.g(Q.mQ/m)pQ0y+[S2_,k-^S2j,w,zS3s.d.oQ6g2fR7c3td]Owx!g&S't(Q*q-w.m!v^[_`!f!}#O$S$d$l$s$u&U&Y&c&m&r&x'P'b)p*]*v+[,X,k,w,z-]-^-a-o-t.d.o1S1T1f2f2z2}3i3tR%tnQ3y.gQ7_3sQ7g3wQ7o3zQ7p3{Q9U7cU9W7e7f7hQ9`7kS:Q9X9YR:c:RZ+o&Y&c*v1S3ipzOnpwx!g%w&S't(Q*q-p-w.f.m.o[%Oa%d0z;`;a;xU%We%h1SQ%eg^&d{|%i1O5a;b;yQ's#OQ*W$gb*_$|$}%S;W;X;Y<W<X<YQ,b&sQ-x'uQ0Z*Y[0[*`*b;o;p;q;rQ0k*tQ0|+]Q2`,lQ2g,vS2{-_2_U5V0];v;wQ5b0yQ6l2jR8i6gQ+}&aR9Z7iS1q+y.XQ8^5}R8_6P[%^f$f(i)l)r0hR0d*lR+`&UQ+_&UR5h1TS&Xy+xQ*g%XU+f&V0z;xS+m&Y1SW+p&Z1O5a;yQ-j'kQ/h)hS0_*d*fQ1R+]Q1^+eQ4t/mQ5W0^Q5`0yQ5u1jR8X5vR5z1mYvOwx&S*qR&t!gW%gg,l,v-_T*X$g2_T)w$W*q[uOwx!g&S*qQ&}!kQ*y%mQ,p&yQ,t'OQ2d,qQ6b2cQ8d6cQ8l6jQ9n8gQ:X9lQ:[9pQ:e:WQ:g:]R:k:fxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fU$h[&|-^X-`'b-]-a2zQ-['`R2o-TS-X'`-TQ2r-VQ2x-YU6p2p2q2sQ6w2vS8o6q6rR9s8p[rOwx!g&S*qS-q't-wT.h(Q.mR+S%y[sOwx!g&S*qS-s't-wT.i(Q.m[tOwx!g&S*qT.j(Q.mT.T'y.UX%af%k0h1QQ.w([R4_.xR.t(ZR(d#XQ(r#aS/R(j(kR4e/SR/V(lR4g/T",
26521
- nodeNames: "⚠ RawString > MacroName LineComment BlockComment PreprocDirective #include String EscapeSequence SystemLibString Identifier ) ( ArgumentList ConditionalExpression AssignmentExpression CallExpression PrimitiveType FieldExpression FieldIdentifier DestructorName TemplateMethod ScopedFieldIdentifier NamespaceIdentifier TemplateType TypeIdentifier ScopedTypeIdentifier ScopedNamespaceIdentifier :: NamespaceIdentifier TypeIdentifier TemplateArgumentList < TypeDescriptor const volatile restrict _Atomic mutable constexpr constinit consteval StructSpecifier struct MsDeclspecModifier __declspec Attribute AttributeName Identifier AttributeArgs { } [ ] UpdateOp ArithOp ArithOp ArithOp LogicOp BitOp BitOp BitOp CompareOp CompareOp CompareOp > CompareOp BitOp UpdateOp , Number CharLiteral AttributeArgs VirtualSpecifier BaseClassClause Access virtual FieldDeclarationList FieldDeclaration extern static register inline thread_local AttributeSpecifier __attribute__ PointerDeclarator MsBasedModifier __based MsPointerModifier FunctionDeclarator ParameterList ParameterDeclaration PointerDeclarator FunctionDeclarator Noexcept noexcept RequiresClause requires True False ParenthesizedExpression CommaExpression LambdaExpression LambdaCaptureSpecifier TemplateParameterList OptionalParameterDeclaration TypeParameterDeclaration typename class VariadicParameterDeclaration VariadicDeclarator ReferenceDeclarator OptionalTypeParameterDeclaration VariadicTypeParameterDeclaration TemplateTemplateParameterDeclaration template AbstractFunctionDeclarator AbstractPointerDeclarator AbstractArrayDeclarator AbstractParenthesizedDeclarator AbstractReferenceDeclarator ThrowSpecifier throw TrailingReturnType CompoundStatement FunctionDefinition MsCallModifier TryStatement try CatchClause catch LinkageSpecification Declaration InitDeclarator InitializerList InitializerPair SubscriptDesignator FieldDesignator ExportDeclaration export ImportDeclaration import ModuleName PartitionName HeaderName CaseStatement case default LabeledStatement StatementIdentifier ExpressionStatement IfStatement if ConditionClause Declaration else SwitchStatement switch DoStatement do while WhileStatement ForStatement for ReturnStatement return BreakStatement break ContinueStatement continue GotoStatement goto CoReturnStatement co_return CoYieldStatement co_yield AttributeStatement ForRangeLoop AliasDeclaration using TypeDefinition typedef PointerDeclarator FunctionDeclarator ArrayDeclarator ParenthesizedDeclarator ThrowStatement NamespaceDefinition namespace ScopedIdentifier Identifier OperatorName operator ArithOp BitOp CompareOp LogicOp new delete co_await ConceptDefinition concept UsingDeclaration enum StaticAssertDeclaration static_assert ConcatenatedString TemplateDeclaration FriendDeclaration friend union FunctionDefinition ExplicitFunctionSpecifier explicit FieldInitializerList FieldInitializer DefaultMethodClause DeleteMethodClause FunctionDefinition OperatorCast operator TemplateInstantiation FunctionDefinition FunctionDefinition Declaration ModuleDeclaration module RequiresExpression RequirementList SimpleRequirement TypeRequirement CompoundRequirement ReturnTypeRequirement ConstraintConjuction LogicOp ConstraintDisjunction LogicOp ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator TemplateFunction OperatorName StructuredBindingDeclarator ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator BitfieldClause FunctionDefinition FunctionDefinition Declaration FunctionDefinition Declaration AccessSpecifier UnionSpecifier ClassSpecifier EnumSpecifier SizedTypeSpecifier TypeSize EnumeratorList Enumerator DependentType Decltype decltype auto PlaceholderTypeSpecifier ParameterPackExpansion ParameterPackExpansion FieldIdentifier PointerExpression SubscriptExpression BinaryExpression ArithOp LogicOp LogicOp BitOp UnaryExpression LogicOp BitOp UpdateExpression CastExpression SizeofExpression sizeof CoAwaitExpression CompoundLiteralExpression NULL NewExpression new NewDeclarator DeleteExpression delete ParameterPackExpansion nullptr this UserDefinedLiteral ParamPack #define PreprocArg #if #ifdef #ifndef #else #endif #elif PreprocDirectiveName Macro Program",
26522
- maxTerm: 425,
26523
- nodeProps: [["group", -35, 1, 8, 11, 15, 16, 17, 19, 71, 72, 100, 101, 102, 104, 191, 208, 229, 242, 243, 270, 271, 272, 277, 280, 281, 282, 284, 285, 286, 287, 290, 292, 293, 294, 295, 296, "Expression", -13, 18, 25, 26, 27, 43, 255, 256, 257, 258, 262, 263, 265, 266, "Type", -19, 126, 129, 147, 150, 152, 153, 158, 160, 163, 164, 166, 168, 170, 172, 174, 176, 178, 179, 188, "Statement"], ["isolate", -4, 4, 5, 8, 10, ""], ["openedBy", 12, "(", 52, "{", 54, "["], ["closedBy", 13, ")", 51, "}", 53, "]"]],
26524
- propSources: [cppHighlighting],
26525
- skippedNodes: [0, 3, 4, 5, 6, 7, 10, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 347, 348],
26526
- repeatNodeCount: 41,
26527
- tokenData: "&*r7ZR!UOX$eXY({YZ.gZ]$e]^+P^p$epq({qr.}rs0}st2ktu$euv!7dvw!9bwx!;exy!<Yyz!=Tz{!>O{|!?R|}!AV}!O!BQ!O!P!DX!P!Q#+y!Q!R#Az!R![$(x![!]$Ag!]!^$Cc!^!_$D^!_!`%1W!`!a%2X!a!b%5_!b!c$e!c!n%6Y!n!o%7q!o!w%6Y!w!x%7q!x!}%6Y!}#O%:n#O#P%<g#P#Q%Kz#Q#R%Ms#R#S%6Y#S#T$e#T#i%6Y#i#j%Nv#j#o%6Y#o#p&!e#p#q&#`#q#r&%f#r#s&&a#s;'S$e;'S;=`(u<%lO$e&t$nY)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e&r%eW)]W'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^&j&SU'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&j&kX'f&jOY%}YZ%}Z]%}]^'W^#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&j']V'f&jOY%}YZ%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&j'uP;=`<%l%}&r'{P;=`<%l%^&l(VW(qQ'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O&l(rP;=`<%l(O&t(xP;=`<%l$e7Z)Y`)]W(qQ(n.o'f&j*Z)`OX$eXY({YZ*[Z]$e]^+P^p$epq({qr$ers%^sw$ewx(Ox#O$e#O#P,^#P;'S$e;'S;=`(u<%lO$e.o*aT(n.oXY*[YZ*[]^*[pq*[#O#P*p.o*sQYZ*[]^*y.o*|PYZ*[4e+[`)]W(qQ(n.o'f&jOX$eXY+PYZ*[Z]$e]^+P^p$epq+Pqr$ers%^sw$ewx(Ox#O$e#O#P,^#P;'S$e;'S;=`(u<%lO$e4Z,cX'f&jOY%}YZ-OZ]%}]^-{^#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}4Z-V[(n.o'f&jOX%}XY-OYZ*[Z]%}]^-O^p%}pq-Oq#O%}#O#P,^#P;'S%};'S;=`'r<%lO%}4Z.QV'f&jOY%}YZ-OZ#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}7P.nT*W)`(n.oXY*[YZ*[]^*[pq*[#O#P*p3o/[[%^!b'QP)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`0Q!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o0_Y%]!b!a,g)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e6e1YY)]W(oQ(p/]'f&jOY%^Zr%^rs1xsw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^(U2RW)x!b)]W'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^4e2tf)]W(qQ'f&jOX$eXY2kZp$epq2kqr$ers%^sw$ewx(Ox!c$e!c!}4Y!}#O$e#O#P&f#P#T$e#T#W4Y#W#X5m#X#Y>u#Y#]4Y#]#^NZ#^#o4Y#o;'S$e;'S;=`(u<%lO$e4e4eb)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4e5xd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y7W#Y#o4Y#o;'S$e;'S;=`(u<%lO$e4e7cd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z8q#Z#o4Y#o;'S$e;'S;=`(u<%lO$e4e8|d)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^:[#^#o4Y#o;'S$e;'S;=`(u<%lO$e4e:gd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#b4Y#b#c;u#c#o4Y#o;'S$e;'S;=`(u<%lO$e4e<Qd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y=`#Y#o4Y#o;'S$e;'S;=`(u<%lO$e4e=mb)]W(qQ'e.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4e?Qf)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#`4Y#`#a@f#a#b4Y#b#cHV#c#o4Y#o;'S$e;'S;=`(u<%lO$e4e@qf)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^BV#^#g4Y#g#hEV#h#o4Y#o;'S$e;'S;=`(u<%lO$e4eBbd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#ZCp#Z#o4Y#o;'S$e;'S;=`(u<%lO$e4eC}b)]W(qQ'f&j'l.o'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4eEbd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#YFp#Y#o4Y#o;'S$e;'S;=`(u<%lO$e4eF}b)]W(qQ'j.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4eHbd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#XIp#X#o4Y#o;'S$e;'S;=`(u<%lO$e4eI{d)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^KZ#^#o4Y#o;'S$e;'S;=`(u<%lO$e4eKfd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#ZLt#Z#o4Y#o;'S$e;'S;=`(u<%lO$e4eMRb)]W(qQ'f&j'k.o'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4eNff)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z! z#Z#b4Y#b#c!.[#c#o4Y#o;'S$e;'S;=`(u<%lO$e4e!!Xf)]W(qQ'g.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!#m#X#b4Y#b#c!(W#c#o4Y#o;'S$e;'S;=`(u<%lO$e4e!#xd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!%W#Y#o4Y#o;'S$e;'S;=`(u<%lO$e4e!%cd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z!&q#Z#o4Y#o;'S$e;'S;=`(u<%lO$e4e!'Ob)]W(qQ'h.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4e!(cd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!)q#X#o4Y#o;'S$e;'S;=`(u<%lO$e4e!)|d)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!+[#Y#o4Y#o;'S$e;'S;=`(u<%lO$e4e!+gd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z!,u#Z#o4Y#o;'S$e;'S;=`(u<%lO$e4e!-Sb)]W(qQ'i.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e4e!.gd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#V4Y#V#W!/u#W#o4Y#o;'S$e;'S;=`(u<%lO$e4e!0Qd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#`4Y#`#a!1`#a#o4Y#o;'S$e;'S;=`(u<%lO$e4e!1kd)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#i4Y#i#j!2y#j#o4Y#o;'S$e;'S;=`(u<%lO$e4e!3Ud)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!4d#X#o4Y#o;'S$e;'S;=`(u<%lO$e4e!4od)]W(qQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!5}#Y#o4Y#o;'S$e;'S;=`(u<%lO$e4e!6[b)]W(qQV.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$e3o!7q[)]W(qQ%Z!b![,g'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!8rY!g-y)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!9o])W,g)]W(qQ%[!b'f&jOY$eZr$ers%^sv$evw!:hwx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!:uY)V,g%^!b)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2X!;pW)ZS(qQ)[,g'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O6i!<eY)]W(qQ]6_'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e'V!=`Y[a)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!>][)T,g)]W(qQ%Z!b'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!?`^)]W(qQ%Z!b!Y,g'f&jOY$eZr$ers%^sw$ewx(Ox{$e{|!@[|!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!@gY)]W!X-y(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2a!AbY!h,k)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!B__)]W(qQ%Z!b!Y,g'f&jOY$eZr$ers%^sw$ewx(Ox}$e}!O!@[!O!_$e!_!`!8g!`!a!C^!a#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o!CiY(x-y)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2a!Dd^)]W(qQ'f&j(w,gOY$eZr$ers%^sw$ewx(Ox!O$e!O!P!E`!P!Q$e!Q![!GY![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2a!Ei[)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!O$e!O!P!F_!P#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2a!FjY)Y,k)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2]!Gen)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx!Icx!Q$e!Q![!GY![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2T!IjY(qQ'f&jOY(OZr(Ors%}s!Q(O!Q![!JY![#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O2T!Jcn(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx!Icx!Q(O!Q![!JY![!g(O!g!h!La!h!i##`!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#X(O#X#Y!La#Y#Z##`#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T!Ljl(qQ!i,g'f&jOY(OZr(Ors%}s{(O{|!Nb|}(O}!O!Nb!O!Q(O!Q![# e![!c(O!c!h# e!h!i# e!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#Y# e#Y#Z# e#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T!Ni^(qQ'f&jOY(OZr(Ors%}s!Q(O!Q![# e![!c(O!c!i# e!i#O(O#O#P&f#P#T(O#T#Z# e#Z;'S(O;'S;=`(o<%lO(O2T# nj(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx!Nbx!Q(O!Q![# e![!c(O!c!h# e!h!i# e!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#Y# e#Y#Z# e#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T##id(qQ!i,g'f&jOY(OZr(Ors%}s!h(O!h!i##`!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#Y(O#Y#Z##`#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2]#%Sn)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx(Ox{$e{|#'Q|}$e}!O#'Q!O!Q$e!Q![#(]![!c$e!c!h#(]!h!i#(]!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#Y#(]#Y#Z#(]#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]#'Z`)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![#(]![!c$e!c!i#(]!i#O$e#O#P&f#P#T$e#T#Z#(]#Z;'S$e;'S;=`(u<%lO$e2]#(hj)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx!Nbx!Q$e!Q![#(]![!c$e!c!h#(]!h!i#(]!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#Y#(]#Y#Z#(]#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]#*ef)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx(Ox!h$e!h!i#*Y!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#Y$e#Y#Z#*Y#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e7Z#,W`)]W(qQ%Z!b![,g'f&jOY$eZr$ers%^sw$ewx(Oxz$ez{#-Y{!P$e!P!Q#:s!Q!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e7Z#-c])]W(qQ'f&jOY#-YYZ#.[Zr#-Yrs#/csw#-Ywx#5wxz#-Yz{#8j{#O#-Y#O#P#2`#P;'S#-Y;'S;=`#:m<%lO#-Y1e#._TOz#.[z{#.n{;'S#.[;'S;=`#/]<%lO#.[1e#.qVOz#.[z{#.n{!P#.[!P!Q#/W!Q;'S#.[;'S;=`#/]<%lO#.[1e#/]OT1e1e#/`P;=`<%l#.[7X#/jZ)]W'f&jOY#/cYZ#.[Zw#/cwx#0]xz#/cz{#4O{#O#/c#O#P#2`#P;'S#/c;'S;=`#5q<%lO#/c7P#0bX'f&jOY#0]YZ#.[Zz#0]z{#0}{#O#0]#O#P#2`#P;'S#0];'S;=`#3x<%lO#0]7P#1SZ'f&jOY#0]YZ#.[Zz#0]z{#0}{!P#0]!P!Q#1u!Q#O#0]#O#P#2`#P;'S#0];'S;=`#3x<%lO#0]7P#1|UT1e'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}7P#2eZ'f&jOY#0]YZ#0]Z]#0]]^#3W^z#0]z{#0}{#O#0]#O#P#2`#P;'S#0];'S;=`#3x<%lO#0]7P#3]X'f&jOY#0]YZ#0]Zz#0]z{#0}{#O#0]#O#P#2`#P;'S#0];'S;=`#3x<%lO#0]7P#3{P;=`<%l#0]7X#4V])]W'f&jOY#/cYZ#.[Zw#/cwx#0]xz#/cz{#4O{!P#/c!P!Q#5O!Q#O#/c#O#P#2`#P;'S#/c;'S;=`#5q<%lO#/c7X#5XW)]WT1e'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^7X#5tP;=`<%l#/c7R#6OZ(qQ'f&jOY#5wYZ#.[Zr#5wrs#0]sz#5wz{#6q{#O#5w#O#P#2`#P;'S#5w;'S;=`#8d<%lO#5w7R#6x](qQ'f&jOY#5wYZ#.[Zr#5wrs#0]sz#5wz{#6q{!P#5w!P!Q#7q!Q#O#5w#O#P#2`#P;'S#5w;'S;=`#8d<%lO#5w7R#7zW(qQT1e'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O7R#8gP;=`<%l#5w7Z#8s_)]W(qQ'f&jOY#-YYZ#.[Zr#-Yrs#/csw#-Ywx#5wxz#-Yz{#8j{!P#-Y!P!Q#9r!Q#O#-Y#O#P#2`#P;'S#-Y;'S;=`#:m<%lO#-Y7Z#9}Y)]W(qQT1e'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e7Z#:pP;=`<%l#-Y7Z#;OY)]W(qQS1e'f&jOY#:sZr#:srs#;nsw#:swx#@{x#O#:s#O#P#<z#P;'S#:s;'S;=`#At<%lO#:s7X#;wW)]WS1e'f&jOY#;nZw#;nwx#<ax#O#;n#O#P#<z#P;'S#;n;'S;=`#@u<%lO#;n7P#<hUS1e'f&jOY#<aZ#O#<a#O#P#<z#P;'S#<a;'S;=`#>[<%lO#<a7P#=RXS1e'f&jOY#<aYZ%}Z]#<a]^#=n^#O#<a#O#P#>b#P;'S#<a;'S;=`#>[<%lO#<a7P#=uVS1e'f&jOY#<aYZ%}Z#O#<a#O#P#<z#P;'S#<a;'S;=`#>[<%lO#<a7P#>_P;=`<%l#<a7P#>i]S1e'f&jOY#<aYZ%}Z]#<a]^#=n^#O#<a#O#P#>b#P#b#<a#b#c#<a#c#f#<a#f#g#?b#g;'S#<a;'S;=`#>[<%lO#<a7P#?iUS1e'f&jOY#<aZ#O#<a#O#P#?{#P;'S#<a;'S;=`#>[<%lO#<a7P#@SZS1e'f&jOY#<aYZ%}Z]#<a]^#=n^#O#<a#O#P#>b#P#b#<a#b#c#<a#c;'S#<a;'S;=`#>[<%lO#<a7X#@xP;=`<%l#;n7R#AUW(qQS1e'f&jOY#@{Zr#@{rs#<as#O#@{#O#P#<z#P;'S#@{;'S;=`#An<%lO#@{7R#AqP;=`<%l#@{7Z#AwP;=`<%l#:s2]#BVt)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx#Dgx!O$e!O!P$ m!P!Q$e!Q![$(x![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#U$e#U#V$+X#V#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$=`#m;'S$e;'S;=`(u<%lO$e2T#DnY(qQ'f&jOY(OZr(Ors%}s!Q(O!Q![#E^![#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O2T#Egp(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx#Dgx!O(O!O!P#Gk!P!Q(O!Q![#E^![!g(O!g!h!La!h!i##`!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#X(O#X#Y!La#Y#Z##`#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T#Gtn(qQ!i,g'f&jOY(OZr(Ors%}s!Q(O!Q![#Ir![!c(O!c!g#Ir!g!h#MS!h!i#Ir!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#Ir#X#Y#MS#Y#Z#Ir#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T#I{p(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx#LPx!Q(O!Q![#Ir![!c(O!c!g#Ir!g!h#MS!h!i#Ir!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#Ir#X#Y#MS#Y#Z#Ir#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T#LW^(qQ'f&jOY(OZr(Ors%}s!Q(O!Q![#Ir![!c(O!c!i#Ir!i#O(O#O#P&f#P#T(O#T#Z#Ir#Z;'S(O;'S;=`(o<%lO(O2T#M]t(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx#LPx{(O{|!Nb|}(O}!O!Nb!O!Q(O!Q![#Ir![!c(O!c!g#Ir!g!h#MS!h!i#Ir!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#Ir#X#Y#MS#Y#Z#Ir#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2]$ xp)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$#|![!c$e!c!g$#|!g!h$&]!h!i$#|!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$#|#X#Y$&]#Y#Z$#|#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]$$Xp)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx#LPx!Q$e!Q![$#|![!c$e!c!g$#|!g!h$&]!h!i$#|!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$#|#X#Y$&]#Y#Z$#|#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]$&ht)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx#LPx{$e{|#'Q|}$e}!O#'Q!O!Q$e!Q![$#|![!c$e!c!g$#|!g!h$&]!h!i$#|!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$#|#X#Y$&]#Y#Z$#|#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]$)Tp)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx#Dgx!O$e!O!P$ m!P!Q$e!Q![$(x![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]$+b_)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!O$e!O!P$,a!P!Q$e!Q!R$-`!R![$(x![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2]$,j[)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![!GY![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2]$-kt)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx#Dgx!O$e!O!P$ m!P!Q$e!Q![$(x![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#U$e#U#V$/{#V#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$0z#m;'S$e;'S;=`(u<%lO$e2]$0U[)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$(x![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2]$1T`)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$2V![!c$e!c!i$2V!i#O$e#O#P&f#P#T$e#T#Z$2V#Z;'S$e;'S;=`(u<%lO$e2]$2br)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx$4lx!O$e!O!P$ m!P!Q$e!Q![$2V![!c$e!c!g$2V!g!h$:p!h!i$2V!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$2V#X#Y$:p#Y#Z$2V#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2T$4s^(qQ'f&jOY(OZr(Ors%}s!Q(O!Q![$5o![!c(O!c!i$5o!i#O(O#O#P&f#P#T(O#T#Z$5o#Z;'S(O;'S;=`(o<%lO(O2T$5xr(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx$4lx!O(O!O!P#Gk!P!Q(O!Q![$5o![!c(O!c!g$5o!g!h$8S!h!i$5o!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X$5o#X#Y$8S#Y#Z$5o#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2T$8]u(qQ!i,g'f&jOY(OZr(Ors%}sw(Owx$4lx{(O{|!Nb|}(O}!O!Nb!O!P#Gk!P!Q(O!Q![$5o![!c(O!c!g$5o!g!h$8S!h!i$5o!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X$5o#X#Y$8S#Y#Z$5o#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(O2]$:{u)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx$4lx{$e{|#'Q|}$e}!O#'Q!O!P$ m!P!Q$e!Q![$2V![!c$e!c!g$2V!g!h$:p!h!i$2V!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$2V#X#Y$:p#Y#Z$2V#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$e2]$=ic)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!O$e!O!P$,a!P!Q$e!Q!R$>t!R![$2V![!c$e!c!i$2V!i#O$e#O#P&f#P#T$e#T#Z$2V#Z;'S$e;'S;=`(u<%lO$e2]$?Pv)]W(qQ!i,g'f&jOY$eZr$ers%^sw$ewx$4lx!O$e!O!P$ m!P!Q$e!Q![$2V![!c$e!c!g$2V!g!h$:p!h!i$2V!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#U$2V#U#V$2V#V#X$2V#X#Y$:p#Y#Z$2V#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$0z#m;'S$e;'S;=`(u<%lO$e4e$Ar[(v-X)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox![$e![!]$Bh!]#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3s$BsYm-})]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2]$CnY)X,g)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e7V$Dk_q,g%]!b)]W(qQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!^$Ej!^!_%+w!_!`%.U!`!a%0]!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q<%lO$Ej*[$Es])]W(qQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!`$Ej!`!a%*t!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q<%lO$Ejp$FoTO!`$Fl!`!a$GO!a;'S$Fl;'S;=`$GT<%lO$Flp$GTO$Wpp$GWP;=`<%l$Fl*Y$GbZ)]W'f&jOY$GZYZ$FlZw$GZwx$HTx!`$GZ!`!a%(U!a#O$GZ#O#P$Ib#P;'S$GZ;'S;=`%(y<%lO$GZ*Q$HYX'f&jOY$HTYZ$FlZ!`$HT!`!a$Hu!a#O$HT#O#P$Ib#P;'S$HT;'S;=`$Mx<%lO$HT*Q$IOU$WpY#t'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}*Q$Ig['f&jOY$HTYZ$HTZ]$HT]^$J]^!`$HT!`!a$NO!a#O$HT#O#P%&n#P;'S$HT;'S;=`%'f;=`<%l%$z<%lO$HT*Q$JbX'f&jOY$HTYZ$J}Z!`$HT!`!a$Hu!a#O$HT#O#P$Ib#P;'S$HT;'S;=`$Mx<%lO$HT'[$KSX'f&jOY$J}YZ$FlZ!`$J}!`!a$Ko!a#O$J}#O#P$LY#P;'S$J};'S;=`$Mr<%lO$J}'[$KvU$Wp'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}'[$L_Z'f&jOY$J}YZ$J}Z]$J}]^$MQ^!`$J}!`!a$Ko!a#O$J}#O#P$LY#P;'S$J};'S;=`$Mr<%lO$J}'[$MVX'f&jOY$J}YZ$J}Z!`$J}!`!a$Ko!a#O$J}#O#P$LY#P;'S$J};'S;=`$Mr<%lO$J}'[$MuP;=`<%l$J}*Q$M{P;=`<%l$HT*Q$NVW$Wp'f&jOY$NoZ!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^<%lO$No)`$NtW'f&jOY$NoZ!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^<%lO$No)`% eUY#t'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%})`% |Y'f&jOY$NoYZ$NoZ]$No]^%!l^#O$No#O#P%#d#P;'S$No;'S;=`%$[;=`<%l%$z<%lO$No)`%!qX'f&jOY$NoYZ%}Z!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^<%lO$No)`%#aP;=`<%l$No)`%#iZ'f&jOY$NoYZ%}Z]$No]^%!l^!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^<%lO$No)`%$_XOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h;=`<%l$No<%lO%$z#t%$}WOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h<%lO%$z#t%%lOY#t#t%%oRO;'S%$z;'S;=`%%x;=`O%$z#t%%{XOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h;=`<%l%$z<%lO%$z#t%&kP;=`<%l%$z*Q%&sZ'f&jOY$HTYZ$J}Z]$HT]^$J]^!`$HT!`!a$Hu!a#O$HT#O#P$Ib#P;'S$HT;'S;=`$Mx<%lO$HT*Q%'iXOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h;=`<%l$HT<%lO%$z*Y%(aW$WpY#t)]W'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^*Y%(|P;=`<%l$GZ*S%)WZ(qQ'f&jOY%)PYZ$FlZr%)Prs$HTs!`%)P!`!a%)y!a#O%)P#O#P$Ib#P;'S%)P;'S;=`%*n<%lO%)P*S%*UW$WpY#t(qQ'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O*S%*qP;=`<%l%)P*[%+RY$WpY#t)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e*[%+tP;=`<%l$Ej7V%,U^)]W(qQ%[!b!f,g'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!_$Ej!_!`%-Q!`!a%*t!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q<%lO$Ej7V%-]]!g-y)]W(qQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!`$Ej!`!a%*t!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q<%lO$Ej7V%.c]%]!b!b,g)]W(qQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!`$Ej!`!a%/[!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q<%lO$Ej7V%/mY%]!b!b,g$WpY#t)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e)j%0hYY#t)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o%1c[)j!c)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`0Q!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o%2f]%]!b)]W(qQ!d,g'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`%3_!`!a%4[!a#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o%3lY%]!b!b,g)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o%4i[)]W(qQ%[!b!f,g'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e&u%5jY(uP)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e7Z%6ib)]W(yS(qQ!R,f(r%y'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![%6Y![!c$e!c!}%6Y!}#O$e#O#P&f#P#R$e#R#S%6Y#S#T$e#T#o%6Y#o;'S$e;'S;=`(u<%lO$e7Z%8Qb)]W(yS(qQ!R,f(r%y'f&jOY$eZr$ers%9Ysw$ewx%9{x!Q$e!Q![%6Y![!c$e!c!}%6Y!}#O$e#O#P&f#P#R$e#R#S%6Y#S#T$e#T#o%6Y#o;'S$e;'S;=`(u<%lO$e5P%9cW)]W(p/]'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^2T%:UW(qQ)[,g'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O3o%:yZ!V-y)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox!}$e!}#O%;l#O#P&f#P;'S$e;'S;=`(u<%lO$e&u%;wY)QP)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e4e%<la'f&jOY%=qYZ%>[Z]%=q]^%?Z^!Q%=q!Q![%?w![!w%=q!w!x%AX!x#O%=q#O#P%H_#P#i%=q#i#j%Ds#j#l%=q#l#m%IR#m;'S%=q;'S;=`%Kt<%lO%=q&t%=xUXY'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}4e%>e[XY(n.o'f&jOX%}XY-OYZ*[Z]%}]^-O^p%}pq-Oq#O%}#O#P,^#P;'S%};'S;=`'r<%lO%}4e%?bVXY'f&jOY%}YZ-OZ#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&t%@OWXY'f&jOY%}Z!Q%}!Q![%@h![#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&t%@oWXY'f&jOY%}Z!Q%}!Q![%=q![#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&t%A^['f&jOY%}Z!Q%}!Q![%BS![!c%}!c!i%BS!i#O%}#O#P&f#P#T%}#T#Z%BS#Z;'S%};'S;=`'r<%lO%}&t%BX['f&jOY%}Z!Q%}!Q![%B}![!c%}!c!i%B}!i#O%}#O#P&f#P#T%}#T#Z%B}#Z;'S%};'S;=`'r<%lO%}&t%CS['f&jOY%}Z!Q%}!Q![%Cx![!c%}!c!i%Cx!i#O%}#O#P&f#P#T%}#T#Z%Cx#Z;'S%};'S;=`'r<%lO%}&t%C}['f&jOY%}Z!Q%}!Q![%Ds![!c%}!c!i%Ds!i#O%}#O#P&f#P#T%}#T#Z%Ds#Z;'S%};'S;=`'r<%lO%}&t%Dx['f&jOY%}Z!Q%}!Q![%En![!c%}!c!i%En!i#O%}#O#P&f#P#T%}#T#Z%En#Z;'S%};'S;=`'r<%lO%}&t%Es['f&jOY%}Z!Q%}!Q![%Fi![!c%}!c!i%Fi!i#O%}#O#P&f#P#T%}#T#Z%Fi#Z;'S%};'S;=`'r<%lO%}&t%Fn['f&jOY%}Z!Q%}!Q![%Gd![!c%}!c!i%Gd!i#O%}#O#P&f#P#T%}#T#Z%Gd#Z;'S%};'S;=`'r<%lO%}&t%Gi['f&jOY%}Z!Q%}!Q![%=q![!c%}!c!i%=q!i#O%}#O#P&f#P#T%}#T#Z%=q#Z;'S%};'S;=`'r<%lO%}&t%HfXXY'f&jOY%}YZ%}Z]%}]^'W^#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}&t%IW['f&jOY%}Z!Q%}!Q![%I|![!c%}!c!i%I|!i#O%}#O#P&f#P#T%}#T#Z%I|#Z;'S%};'S;=`'r<%lO%}&t%JR['f&jOY%}Z!Q%}!Q![%Jw![!c%}!c!i%Jw!i#O%}#O#P&f#P#T%}#T#Z%Jw#Z;'S%};'S;=`'r<%lO%}&t%KO[XY'f&jOY%}Z!Q%}!Q![%Jw![!c%}!c!i%Jw!i#O%}#O#P&f#P#T%}#T#Z%Jw#Z;'S%};'S;=`'r<%lO%}&t%KwP;=`<%l%=q2a%LVZ!W,V)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P#Q%Lx#Q;'S$e;'S;=`(u<%lO$e'Y%MTY)Pd)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o%NQ[)]W(qQ%[!b'f&j!_,gOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e7Z& Vd)]W(yS(qQ!R,f(r%y'f&jOY$eZr$ers%9Ysw$ewx%9{x!Q$e!Q!Y%6Y!Y!Z%7q!Z![%6Y![!c$e!c!}%6Y!}#O$e#O#P&f#P#R$e#R#S%6Y#S#T$e#T#o%6Y#o;'S$e;'S;=`(u<%lO$e2]&!pY!T,g)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3o&#m^)]W(qQ%[!b'f&j!^,gOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P#p$e#p#q&$i#q;'S$e;'S;=`(u<%lO$e3o&$vY)U,g%^!b)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e'V&%qY!Ua)]W(qQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e(]&&nc)]W(qQ%[!b'RP'f&jOX$eXY&'yZp$epq&'yqr$ers%^sw$ewx(Ox!c$e!c!}&)_!}#O$e#O#P&f#P#R$e#R#S&)_#S#T$e#T#o&)_#o;'S$e;'S;=`(u<%lO$e&y&(Sc)]W(qQ'f&jOX$eXY&'yZp$epq&'yqr$ers%^sw$ewx(Ox!c$e!c!}&)_!}#O$e#O#P&f#P#R$e#R#S&)_#S#T$e#T#o&)_#o;'S$e;'S;=`(u<%lO$e&y&)jb)]W(qQeT'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![&)_![!c$e!c!}&)_!}#O$e#O#P&f#P#R$e#R#S&)_#S#T$e#T#o&)_#o;'S$e;'S;=`(u<%lO$e",
26528
- tokenizers: [rawString, fallback, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
26529
- topRules: {
26530
- "Program": [0, 307]
26531
- },
26532
- dynamicPrecedences: {
26533
- "87": 1,
26534
- "94": 1,
26535
- "119": 1,
26536
- "184": 1,
26537
- "187": -10,
26538
- "240": -10,
26539
- "241": 1,
26540
- "244": -1,
26541
- "246": -10,
26542
- "247": 1,
26543
- "262": -1,
26544
- "267": 2,
26545
- "268": 2,
26546
- "306": -10,
26547
- "365": 3,
26548
- "417": 1,
26549
- "418": 3,
26550
- "419": 1,
26551
- "420": 1
26552
- },
26553
- specialized: [{
26554
- term: 356,
26555
- get: value => spec_identifier[value] || -1
26556
- }, {
26557
- term: 33,
26558
- get: value => spec_[value] || -1
26559
- }, {
26560
- term: 66,
26561
- get: value => spec_templateArgsEnd[value] || -1
26562
- }, {
26563
- term: 363,
26564
- get: value => spec_scopedIdentifier[value] || -1
26565
- }],
26566
- tokenPrec: 24891
26567
- });
26568
-
26569
- /**
26570
- A language provider based on the [Lezer C++
26571
- parser](https://github.com/lezer-parser/cpp), extended with
26572
- highlighting and indentation information.
26573
- */
26574
- const cppLanguage = /*@__PURE__*/LRLanguage.define({
26575
- name: "cpp",
26576
- parser: /*@__PURE__*/parser.configure({
26577
- props: [/*@__PURE__*/indentNodeProp.add({
26578
- IfStatement: /*@__PURE__*/continuedIndent({
26579
- except: /^\s*({|else\b)/
26580
- }),
26581
- TryStatement: /*@__PURE__*/continuedIndent({
26582
- except: /^\s*({|catch)\b/
26583
- }),
26584
- LabeledStatement: flatIndent,
26585
- CaseStatement: context => context.baseIndent + context.unit,
26586
- BlockComment: () => null,
26587
- CompoundStatement: /*@__PURE__*/delimitedIndent({
26588
- closing: "}"
26589
- }),
26590
- Statement: /*@__PURE__*/continuedIndent({
26591
- except: /^{/
26592
- })
26593
- }), /*@__PURE__*/foldNodeProp.add({
26594
- "DeclarationList CompoundStatement EnumeratorList FieldDeclarationList InitializerList": foldInside,
26595
- BlockComment(tree) {
26596
- return {
26597
- from: tree.from + 2,
26598
- to: tree.to - 2
26599
- };
26600
- }
26601
- })]
26602
- }),
26603
- languageData: {
26604
- commentTokens: {
26605
- line: "//",
26606
- block: {
26607
- open: "/*",
26608
- close: "*/"
26609
- }
26610
- },
26611
- indentOnInput: /^\s*(?:case |default:|\{|\})$/,
26612
- closeBrackets: {
26613
- stringPrefixes: ["L", "u", "U", "u8", "LR", "UR", "uR", "u8R", "R"]
26614
- }
26615
- }
26616
- });
26617
- /**
26618
- Language support for C++.
26619
- */
26620
- function cpp() {
26621
- return new LanguageSupport(cppLanguage);
26622
- }
26623
-
26624
24626
  function getAugmentedNamespace(n) {
26625
24627
  if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;
26626
24628
  var f = n.default;
@@ -39846,11 +37848,11 @@ const timeout = 10000;
39846
37848
  const changesDelay = 500;
39847
37849
  const CompletionItemKindMap = Object.fromEntries(Object.entries(mainExports.CompletionItemKind).map(([key, value]) => [value, key]));
39848
37850
  const useLast = (values) => values.reduce((_, v) => v, '');
39849
- const client = Facet.define({
37851
+ Facet.define({
39850
37852
  combine: useLast,
39851
37853
  });
39852
- const documentUri = Facet.define({ combine: useLast });
39853
- const languageId = Facet.define({ combine: useLast });
37854
+ Facet.define({ combine: useLast });
37855
+ Facet.define({ combine: useLast });
39854
37856
  class LanguageServerClient {
39855
37857
  constructor(options) {
39856
37858
  this.options = options;
@@ -39888,7 +37890,7 @@ class LanguageServerClient {
39888
37890
  textDocument: {
39889
37891
  hover: {
39890
37892
  dynamicRegistration: true,
39891
- contentFormat: ['plaintext', 'markdown'],
37893
+ contentFormat: ['markdown', 'plaintext'],
39892
37894
  },
39893
37895
  moniker: {},
39894
37896
  synchronization: {
@@ -39902,16 +37904,19 @@ class LanguageServerClient {
39902
37904
  completionItem: {
39903
37905
  snippetSupport: false,
39904
37906
  commitCharactersSupport: true,
39905
- documentationFormat: ['plaintext', 'markdown'],
37907
+ documentationFormat: ['markdown', 'plaintext'],
39906
37908
  deprecatedSupport: false,
39907
37909
  preselectSupport: false,
37910
+ resolveSupport: {
37911
+ properties: ['detail', 'documentation'],
37912
+ },
39908
37913
  },
39909
37914
  contextSupport: true,
39910
37915
  },
39911
37916
  signatureHelp: {
39912
37917
  dynamicRegistration: true,
39913
37918
  signatureInformation: {
39914
- documentationFormat: ['plaintext', 'markdown'],
37919
+ documentationFormat: ['markdown', 'plaintext'],
39915
37920
  },
39916
37921
  },
39917
37922
  declaration: {
@@ -39967,6 +37972,15 @@ class LanguageServerClient {
39967
37972
  async textDocumentDefinition(params) {
39968
37973
  return await this.request('textDocument/definition', params, timeout);
39969
37974
  }
37975
+ async textDocumentDeclaration(params) {
37976
+ return await this.request('textDocument/declaration', params, timeout);
37977
+ }
37978
+ async textDocumentTypeDefinition(params) {
37979
+ return await this.request('textDocument/typeDefinition', params, timeout);
37980
+ }
37981
+ async completionItemResolve(params) {
37982
+ return await this.request('completionItem/resolve', params, timeout);
37983
+ }
39970
37984
  attachPlugin(plugin) {
39971
37985
  this.plugins.push(plugin);
39972
37986
  }
@@ -39993,12 +38007,12 @@ class LanguageServerClient {
39993
38007
  }
39994
38008
  }
39995
38009
  class LanguageServerPlugin {
39996
- constructor(view, allowHTMLContent) {
38010
+ constructor(view, { client, documentUri, languageId, allowHTMLContent, }) {
39997
38011
  this.view = view;
38012
+ this.client = client;
38013
+ this.documentUri = documentUri;
38014
+ this.languageId = languageId;
39998
38015
  this.allowHTMLContent = allowHTMLContent;
39999
- this.client = this.view.state.facet(client);
40000
- this.documentUri = this.view.state.facet(documentUri);
40001
- this.languageId = this.view.state.facet(languageId);
40002
38016
  this.documentVersion = 0;
40003
38017
  this.changesTimeout = 0;
40004
38018
  this.client.attachPlugin(this);
@@ -40140,7 +38154,8 @@ class LanguageServerPlugin {
40140
38154
  });
40141
38155
  }
40142
38156
  }
40143
- const options = items.map(({ detail, label, kind, textEdit, documentation, additionalTextEdits, }) => {
38157
+ const options = items.map((item) => {
38158
+ const { detail, label, kind, textEdit, documentation, additionalTextEdits, } = item;
40144
38159
  const completion = {
40145
38160
  label,
40146
38161
  detail,
@@ -40178,20 +38193,26 @@ class LanguageServerPlugin {
40178
38193
  },
40179
38194
  type: kind && CompletionItemKindMap[kind].toLowerCase(),
40180
38195
  };
40181
- if (documentation) {
40182
- completion.info = async () => {
40183
- const dom = document.createElement('div');
40184
- dom.classList.add('documentation');
40185
- if (this.allowHTMLContent) {
40186
- dom.innerHTML = await formatContents(documentation);
40187
- }
40188
- else {
40189
- dom.textContent =
40190
- await formatContents(documentation);
40191
- }
40192
- return dom;
40193
- };
40194
- }
38196
+ completion.info = async () => {
38197
+ var _a;
38198
+ let { documentation } = item;
38199
+ if (!documentation &&
38200
+ ((_a = this.client.capabilities.completionProvider) === null || _a === void 0 ? void 0 : _a.resolveProvider)) {
38201
+ const resolvedItem = await this.client.completionItemResolve(item);
38202
+ documentation = resolvedItem.documentation;
38203
+ }
38204
+ if (!documentation)
38205
+ return null;
38206
+ const dom = document.createElement('div');
38207
+ dom.classList.add('documentation');
38208
+ if (this.allowHTMLContent) {
38209
+ dom.innerHTML = await formatContents(documentation);
38210
+ }
38211
+ else {
38212
+ dom.textContent = await formatContents(documentation);
38213
+ }
38214
+ return dom;
38215
+ };
40195
38216
  return completion;
40196
38217
  });
40197
38218
  return {
@@ -40200,12 +38221,11 @@ class LanguageServerPlugin {
40200
38221
  filter: false,
40201
38222
  };
40202
38223
  }
40203
- async requestDefinition(view, { line, character }) {
40204
- if (!this.client.ready ||
40205
- !this.client.capabilities.definitionProvider) {
38224
+ async requestLocation(view, { line, character }, capability, method) {
38225
+ if (!this.client.ready || !this.client.capabilities[capability]) {
40206
38226
  return null;
40207
38227
  }
40208
- const result = await this.client.textDocumentDefinition({
38228
+ const result = await this.client[method]({
40209
38229
  textDocument: { uri: this.documentUri },
40210
38230
  position: { line, character },
40211
38231
  });
@@ -40222,6 +38242,7 @@ class LanguageServerPlugin {
40222
38242
  anchor: posToOffset(view.state.doc, range.start),
40223
38243
  head: posToOffset(view.state.doc, range.end),
40224
38244
  },
38245
+ scrollIntoView: true,
40225
38246
  }));
40226
38247
  }
40227
38248
  return {
@@ -40229,6 +38250,15 @@ class LanguageServerPlugin {
40229
38250
  range,
40230
38251
  };
40231
38252
  }
38253
+ async requestDefinition(view, { line, character }) {
38254
+ return this.requestLocation(view, { line, character }, 'definitionProvider', 'textDocumentDefinition');
38255
+ }
38256
+ async requestDeclaration(view, { line, character }) {
38257
+ return this.requestLocation(view, { line, character }, 'declarationProvider', 'textDocumentDeclaration');
38258
+ }
38259
+ async requestTypeDefinition(view, { line, character }) {
38260
+ return this.requestLocation(view, { line, character }, 'typeDefinitionProvider', 'textDocumentTypeDefinition');
38261
+ }
40232
38262
  processNotification(notification) {
40233
38263
  try {
40234
38264
  switch (notification.method) {
@@ -40273,58 +38303,6 @@ class LanguageServerPlugin {
40273
38303
  }
40274
38304
  }
40275
38305
  const languageServerPlugin = ViewPlugin.fromClass(LanguageServerPlugin);
40276
- function languageServer(options) {
40277
- const serverUri = options.serverUri;
40278
- const { serverUri: _, ...optionsWithoutServerUri } = options;
40279
- return languageServerWithTransport({
40280
- ...optionsWithoutServerUri,
40281
- transport: new buildExports.WebSocketTransport(serverUri),
40282
- });
40283
- }
40284
- function languageServerWithTransport(options) {
40285
- return [
40286
- client.of(options.client ||
40287
- new LanguageServerClient({
40288
- ...options,
40289
- autoClose: true,
40290
- })),
40291
- documentUri.of(options.documentUri),
40292
- languageId.of(options.languageId),
40293
- languageServerPlugin.of(options.allowHTMLContent),
40294
- hoverTooltip((view, pos) => {
40295
- var _a;
40296
- const plugin = view.plugin(languageServerPlugin);
40297
- return ((_a = plugin === null || plugin === void 0 ? void 0 : plugin.requestHoverTooltip(view, offsetToPos(view.state.doc, pos))) !== null && _a !== void 0 ? _a : null);
40298
- }),
40299
- autocompletion({
40300
- override: [
40301
- async (context) => {
40302
- var _a, _b, _c;
40303
- const { state, pos, explicit, view } = context;
40304
- const plugin = view.plugin(languageServerPlugin);
40305
- if (plugin == null)
40306
- return null;
40307
- const line = state.doc.lineAt(pos);
40308
- let trigKind = mainExports.CompletionTriggerKind.Invoked;
40309
- let trigChar;
40310
- if (!explicit &&
40311
- ((_c = (_b = (_a = plugin.client.capabilities) === null || _a === void 0 ? void 0 : _a.completionProvider) === null || _b === void 0 ? void 0 : _b.triggerCharacters) === null || _c === void 0 ? void 0 : _c.includes(line.text[pos - line.from - 1]))) {
40312
- trigKind = mainExports.CompletionTriggerKind.TriggerCharacter;
40313
- trigChar = line.text[pos - line.from - 1];
40314
- }
40315
- if (trigKind === mainExports.CompletionTriggerKind.Invoked &&
40316
- !context.matchBefore(/\w+$/)) {
40317
- return null;
40318
- }
40319
- return await plugin.requestCompletion(context, offsetToPos(state.doc, pos), {
40320
- triggerCharacter: trigChar,
40321
- triggerKind: trigKind,
40322
- });
40323
- },
40324
- ],
40325
- }),
40326
- ];
40327
- }
40328
38306
  async function formatContents(contents) {
40329
38307
  if (isLSPMarkupContent(contents)) {
40330
38308
  let value = contents.value;
@@ -40372,44 +38350,124 @@ function isLSPMarkupContent(contents) {
40372
38350
  return contents.kind !== undefined;
40373
38351
  }
40374
38352
 
40375
- function jumpTo(view, pos) {
38353
+ function requestDefinition(view, pos) {
40376
38354
  const plugin = view.plugin(languageServerPlugin);
40377
38355
  if (!plugin)
40378
38356
  return false;
40379
38357
  plugin.requestDefinition(view, offsetToPos(view.state.doc, pos));
40380
38358
  return true;
40381
38359
  }
40382
- const jumpToDefinition = (view) => jumpTo(view, view.state.selection.main.head);
40383
- const jumpToDefinitionPos = (pos) => (view) => jumpTo(view, pos);
38360
+ function requestTypeDefinition(view, pos) {
38361
+ const plugin = view.plugin(languageServerPlugin);
38362
+ if (!plugin)
38363
+ return false;
38364
+ plugin.requestTypeDefinition(view, offsetToPos(view.state.doc, pos));
38365
+ return true;
38366
+ }
38367
+ const jumpToDefinition = (view) => requestDefinition(view, view.state.selection.main.head);
38368
+ const jumpToDefinitionPos = (pos) => (view) => requestDefinition(view, pos);
38369
+ const jumpToTypeDefinition = (view) => requestTypeDefinition(view, view.state.selection.main.head);
38370
+ const jumpToTypeDefinitionPos = (pos) => (view) => requestTypeDefinition(view, pos);
40384
38371
  const jumpToDefinitionKeymap = [
40385
38372
  { key: 'F12', run: jumpToDefinition, preventDefault: true },
38373
+ { key: 'Mod-F12', run: jumpToTypeDefinition, preventDefault: true },
40386
38374
  ];
40387
38375
 
38376
+ const hoverTooltip = () => hoverTooltip$1((view, pos) => {
38377
+ var _a;
38378
+ const plugin = view.plugin(languageServerPlugin);
38379
+ return ((_a = plugin === null || plugin === void 0 ? void 0 : plugin.requestHoverTooltip(view, offsetToPos(view.state.doc, pos))) !== null && _a !== void 0 ? _a : null);
38380
+ });
38381
+
38382
+ const autocompletion = () => autocompletion$1({
38383
+ override: [
38384
+ async (context) => {
38385
+ var _a, _b, _c;
38386
+ const { state, pos, explicit, view } = context;
38387
+ const plugin = view.plugin(languageServerPlugin);
38388
+ if (plugin == null)
38389
+ return null;
38390
+ const line = state.doc.lineAt(pos);
38391
+ let trigKind = mainExports.CompletionTriggerKind.Invoked;
38392
+ let trigChar;
38393
+ if (!explicit &&
38394
+ ((_c = (_b = (_a = plugin.client.capabilities) === null || _a === void 0 ? void 0 : _a.completionProvider) === null || _b === void 0 ? void 0 : _b.triggerCharacters) === null || _c === void 0 ? void 0 : _c.includes(line.text[pos - line.from - 1]))) {
38395
+ trigKind = mainExports.CompletionTriggerKind.TriggerCharacter;
38396
+ trigChar = line.text[pos - line.from - 1];
38397
+ }
38398
+ if (trigKind === mainExports.CompletionTriggerKind.Invoked &&
38399
+ !context.matchBefore(/\w+$/)) {
38400
+ return null;
38401
+ }
38402
+ return await plugin.requestCompletion(context, offsetToPos(state.doc, pos), {
38403
+ triggerCharacter: trigChar,
38404
+ triggerKind: trigKind,
38405
+ });
38406
+ },
38407
+ ],
38408
+ });
38409
+
38410
+ const mouseHandler = () => EditorView.domEventHandlers({
38411
+ mousedown: (event, view) => {
38412
+ if (!event.ctrlKey && !event.metaKey)
38413
+ return;
38414
+ const pos = view.posAtCoords({
38415
+ x: event.clientX,
38416
+ y: event.clientY,
38417
+ });
38418
+ const ok = (event.shiftKey
38419
+ ? jumpToTypeDefinitionPos(pos)
38420
+ : jumpToDefinitionPos(pos))(view);
38421
+ if (ok)
38422
+ event.preventDefault();
38423
+ },
38424
+ });
38425
+
38426
+ function languageServer(options) {
38427
+ const serverUri = options.serverUri;
38428
+ const { serverUri: _, ...optionsWithoutServerUri } = options;
38429
+ return languageServerWithTransport({
38430
+ ...optionsWithoutServerUri,
38431
+ transport: new buildExports.WebSocketTransport(serverUri),
38432
+ });
38433
+ }
38434
+ function languageServerWithTransport(options) {
38435
+ return [
38436
+ languageServerPlugin.of({
38437
+ client: options.client ||
38438
+ new LanguageServerClient({
38439
+ ...options,
38440
+ autoClose: true,
38441
+ }),
38442
+ documentUri: options.documentUri,
38443
+ languageId: options.languageId,
38444
+ allowHTMLContent: options.allowHTMLContent,
38445
+ }),
38446
+ hoverTooltip(),
38447
+ autocompletion(),
38448
+ keymap.of([...jumpToDefinitionKeymap]),
38449
+ mouseHandler(),
38450
+ ];
38451
+ }
38452
+
40388
38453
  var tabSizeCompartment = new Compartment();
38454
+ var doc = "#include <iostream>\n\nusing namespace std;\n\nclass Animal {\n\tpublic:\n\t\tvoid say(string call) {\n\t\t\tcout << call << endl;\n\t\t}\n};\n\nclass Cat : Animal {\n\tpublic:\n\t\tvoid meow() {\n\t\t\tthis->say(\"meow\");\n\t\t}\n};\n\nint main() {\n\tCat cat;\n\tcat.meow();\n\treturn 0;\n}\n";
40389
38455
  new EditorView({
40390
- doc: '#include <iostream>\n\nusing namespace std;\n\nint main() {\n\treturn 0;\n}\n',
38456
+ doc: doc,
40391
38457
  parent: document.getElementById('editor'),
40392
38458
  extensions: [lineNumbers(), highlightSpecialChars(), history(), foldGutter(), drawSelection(), EditorState.allowMultipleSelections.of(true), indentOnInput(), indentUnit.of('\t'), syntaxHighlighting(defaultHighlightStyle, {
40393
38459
  fallback: true
40394
- }), bracketMatching(), closeBrackets(), rectangularSelection(), highlightActiveLine(), highlightSelectionMatches(), panels(), keymap.of([].concat(_toConsumableArray(closeBracketsKeymap), _toConsumableArray(defaultKeymap), [indentWithTab], _toConsumableArray(searchKeymap), _toConsumableArray(historyKeymap), _toConsumableArray(foldKeymap), _toConsumableArray(completionKeymap), _toConsumableArray(lintKeymap))), tabSizeCompartment.of(EditorState.tabSize.of(4)), cpp(), languageServer({
40395
- serverUri: 'ws://localhost:3000/?stack=clangd11',
38460
+ }), bracketMatching(), closeBrackets(), rectangularSelection(), highlightActiveLine(), highlightSelectionMatches(), panels(), keymap.of([].concat(_toConsumableArray(closeBracketsKeymap), _toConsumableArray(defaultKeymap), [indentWithTab], _toConsumableArray(searchKeymap), _toConsumableArray(historyKeymap), _toConsumableArray(foldKeymap), _toConsumableArray(completionKeymap), _toConsumableArray(lintKeymap))), tabSizeCompartment.of(EditorState.tabSize.of(4)),
38461
+ // cpp(),
38462
+ languageServer({
38463
+ serverUri: 'ws://localhost:3000/?stack=python3',
40396
38464
  allowHTMLContent: true,
40397
38465
  rootUri: 'file:///demo',
40398
38466
  workspaceFolders: [{
40399
38467
  name: 'root',
40400
38468
  uri: 'file:///demo'
40401
38469
  }],
40402
- documentUri: "file:///demo/main.cpp",
40403
- languageId: 'cpp'
40404
- }), keymap.of(_toConsumableArray(jumpToDefinitionKeymap)), EditorView.domEventHandlers({
40405
- click: function click(event, view) {
40406
- if (!event.ctrlKey && !event.metaKey) return;
40407
- var pos = view.posAtCoords({
40408
- x: event.clientX,
40409
- y: event.clientY
40410
- });
40411
- var ok = jumpToDefinitionPos(pos)(view);
40412
- if (ok) event.preventDefault();
40413
- }
38470
+ documentUri: "file:///demo/main.py",
38471
+ languageId: 'python'
40414
38472
  })]
40415
38473
  });